繁体   English   中英

jQuery单击事件的HTML更新

[英]Html update on Jquery click event

我有一个选项卡式DIV元素,该元素在第一次单击时会更改,但是此后失去功能

HTML:

<div id="holder">
<ul style="list-style:none; margin:0; padding:0;">
<li><a name="CondLink"id="onlink">Link1</a></li>
<li><a name="EffLink">Link2</a></li>
</ul>
</div>

Javascript(Jquery):

$('a[name=CondLink]').click(function(){
    $('div[id=holder]').html('<ul style="list-style:none; margin:0; padding:0;"><li><a name="CondLink" id="onlink">Link1</a></li><li><a name="EffLink">Link2</a></li></ul>');
});

$('a[name=EffLink]').click(function(){
    $('div[id=holder]').html('<ul style="list-style:none; margin:0; padding:0;"><li><a name="CondLink">Link1</a></li><li><a name="EffLink" id="onlink">Link2</a></li></ul>');
});

单击任一选项卡仅会在第一次单击时正确更新HTML,但不会在任何后续单击中执行任何功能。

(注意:控制台不会给我任何错误,但也不会在后续点击中的任何点击功能中都出现断点)

您的其他点击事件不起作用,因为您覆盖了“所有者的”子元素。 基本上,您删除它们并添加没有绑定click事件的新元素。

简单的解决方案:

替换为:

$('a[name=CondLink]').click(function(){
   // code...
});

有了这个:

$(document).on('click', 'a[name=CondLink]', function(e) {
    // code...
});

那是因为您要替换链接。 因此,绑定事件侦听器不再位于新链接上,因此只需在替换链接后重新绑定它们即可。

 function bindClicks(){ $('a[name=CondLink]').click(function(){ $('div[id=holder]').html('<ul style="list-style:none; margin:0; padding:0;"><li><a name="CondLink" id="onlink">Link1</a></li><li><a name="EffLink">Link2</a></li></ul>'); bindClicks(); }); $('a[name=EffLink]').click(function(){ $('div[id=holder]').html('<ul style="list-style:none; margin:0; padding:0;"><li><a name="CondLink">Link1</a></li><li><a name="EffLink" id="onlink">Link2</a></li></ul>'); bindClicks(); }); } bindClicks(); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="holder"> <ul style="list-style:none; margin:0; padding:0;"> <li><a name="CondLink"id="onlink">Link1</a></li> <li><a name="EffLink">Link2</a></li> </ul> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM