1

这真的是两个问题合二为一...

首先,我有一张“门票”清单。每张票都有一个唯一的 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();
});

});

其次,我的“单击此处”链接仅在页面上有效一次。关于如何使其适用于列表中的所有项目的任何想法(每个列表项目都有一个唯一的 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 回答