2009-09-02 23 views
1

これは実際には2つの質問です...jquery htmlを使用して追加したアンカーの使用

まず、私は「チケット」のリストを持っています。各チケットには一意のIDがあり、IDを使用するために使用しています。 ( 'a.showMore')をクリックすると、チケットの詳細を表示することができます。これをクリックすると、jquery.appendを使用してこの追加情報を閉じ、追加情報をスライドさせるオプションを追加します。問題は近くにあります。 a.closeMoreをハードコードすると動作しますが、追加しても何も起こりません。私が間違っていることに関するアイデアは?

コード:

$(document).ready(function(){ 
$('.moreInfo').hide(); //hide the extra info on page load 

//Show more information when a.showMore is clicked 
$('.showMore').click(function(){ 
    var ticketNumber=$(this).attr("id"); 
    var id="#more_"+ticketNumber; 
    $('p.options').append(' or <a id="'+ticketNumber+'" class="closeMore">close more info</a></p>');//Add close option to p.options 
    $(id).slideDown(); //slide the extra info down 
}); 


//close more information 
$('.closeMore').click(function(){ 
    var id="#more_"+$(this).attr("id"); 
    $(id).slideUp(); 
}); 

}); 

第二に、私の 'ここをクリック' リンクがページだけで一度動作します。私はそれが(各リスト項目は、固有のIDが、同じクラス(a.showMoreを持っている)、リスト内のすべての項目のために動作させると、それがクリックされるたびに動作させることができる方法上の任意のアイデア?

ありがとう!

答えて

1

live()ハンドラを使用すると、クリックハンドラが追加されるタイミングに関係なく、ページ上の任意の要素にクリックハンドラを適用できます。ライブハンドラを使用しない場合は、ハンドラを追加する要素にハンドラを適用する必要があります。元のハンドラが適用されたときにこれらの要素が存在しなかったため追加されたページであり、ハンドラが接続されていないためハンドラが接続されていません。

+0

乾杯!それは完璧に働いた。 – Matt

関連する問題