将div类替换为具有其事件的其他类。 JQuery的

时间:2015-01-10 15:07:47

标签: jquery class events replace

我想用其他类改变div类及其事件,我有这个:

<ul  class="pants"> 
<li><a href="#"  ><img src="images/1.png" alt="a"  /></a></li>     
<li><a href="#"  ><img src="images/2.png" alt="b"  /></a></li>   
</ul>
<ul  class="tshirts">
<li><a href="#"  ><img src="images/3.png" alt="a"  /></a></li>     
<li><a href="#"  ><img src="images/4.png" alt="b"  /></a></li>   
</ul>

JQuery:

$('.tshirts a').click(function(){
Alert('This is a pant');
});

我用它来改变课程:

$('.pants').attr('class','tshirts');

班级名称已更改,但是当我点击列表时,它不显示警报。因此不会使用此引发事件。有人可以帮助。谢谢大家。

2 个答案:

答案 0 :(得分:2)

您需要将一个事件委托给静态父级或文档:

$(document).on('click', '.tshirts a', function(){
    // alert code
});

由于dom中的a属性在dom准备好后已经更改,并且doc ready上的事件绑定将无法用于此元素,因此您必须将其委托给最近的静态父级或文档本身。

而不是更改属性,您可以添加/删除类名:

$('.pants').toggleClass('pants tshirts');

答案 1 :(得分:0)

因为您正在使用click事件,所以这将绑定到页面加载时的元素。

更新类名时,还需要在这些元素上绑定click事件:

$(document).on('click', '.tshirts a', function(e) {
  // Do stuff here
});