1

これは本当に1つの2つの質問です...

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

コード:

$(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();
});

});

第二に、私の「ここをクリック」リンクは、ページ上で 1 回しか機能しません。リスト内のすべてのアイテムに対して機能させる方法についてのアイデアはありますか (各リストアイテムには一意の ID がありますが、同じクラス (a.showMore) であり、クリックされるたびに機能しますか?

ありがとう!

4

1 に答える 1

1

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

$('.closeMore').live('click', function(){
  var id="#more_"+$(this).attr("id");
  $(id).slideUp();
});
于 2009-09-02T15:09:49.853 に答える