Javascript 点击问题:动态生成的链接不触发点击功能
下面是两段代码,出于某种原因,什么都没有发生,但是来自同一个JS文件的其他jQuery函数在UL页面上执行得很好,是不是有什么东西在盯着我看呢Javascript 点击问题:动态生成的链接不触发点击功能,javascript,jquery,html,Javascript,Jquery,Html,下面是两段代码,出于某种原因,什么都没有发生,但是来自同一个JS文件的其他jQuery函数在UL页面上执行得很好,是不是有什么东西在盯着我看呢 <ul id="activityPaganation" class="paganation"> <li>1</li> <li><a href="#">2</a></li> <li><a href="#">3</a>
<ul id="activityPaganation" class="paganation">
<li>1</li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">6</a></li>
</ul>
$(document).ready(function() {
$('#activityPaganation li a').on("click", function(e) {
e.preventDefault();
var pid = $(this).text();
alert(pid);
});
});
- 一,
$(文档).ready(函数(){
$(#activitypaganization li a')。在(“单击”上,函数(e){
e、 预防默认值();
var pid=$(this.text();
警报(pid);
});
});
您可以使用事件委派,因为它是动态添加到DOM中的
$(document).on("click", "#activityPaganation li a", function(e) {
e.preventDefault();
var pid = $(this).text();
alert(pid);
});
不要使用文档,而是使用DOM中任何时间点存在的容器
如果添加了li,并且您的ul
#活动标签
随时存在,则:
$('#activityPaganation').on("click", "li a", function(e) {
e.preventDefault();
var pid = $(this).text();
alert(pid);
});
否则,将事件绑定移动到加载的complete
回调
i、 e
原因是,使用元素上的直接事件绑定,它需要存在于DOM中,而解决方法是将事件委托给DOM中任何点或文档头上存在的容器,以便将来添加元素时,它从其父元素处获得委托的事件。实际上,它使用事件冒泡来实现此效果
尝试事件委派 替换
$('#activityPaganation li a').on("click", function(e) {
与
因为元素是动态添加到页面的,所以事件不会绑定到添加的元素
您正在尝试的事件签名只会将事件绑定到
DOM
中当时存在的元素。因此,将事件委托给最近的静态祖先将解决您的问题,因为事件会冒泡并由它处理。您是否有机会将这些动态添加到DOM中,或者您确定没有复制id?@PSL是的,通过jquery load()加载对我来说没有什么问题。打开开发人员工具(大多数浏览器上都是F12),然后键入$(“#activitypaganization li a”)
。按ENTER键时,应该可以看到正在加载的图元。
$('#activityPaganation li a').on("click", function(e) {
$(document).on("click", '#activityPaganation li a', function(e) {