点击问题:动态生成的链接不触发点击功能

2024-06-21

下面是两个代码片段,由于某种原因什么也没有发生,但来自同一个 JS 文件的其他 jQuery 函数在带有 UL 的页面上执行得很好,这是在盯着我看吗?

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

您可以使用事件委托,因为它是动态添加到 DOM 中的。

 $(document).on("click", "#activityPaganation li a", function(e) {
            e.preventDefault();     
            var pid = $(this).text();

            alert(pid);
    });

使用任何时间点都存在于 DOM 中的某个容器来代替文档。

如果添加了 li 并且你的ul #activityPaganation那么任意时刻都存在:

  $('#activityPaganation').on("click", "li a", function(e) {
                e.preventDefault();     
                var pid = $(this).text();

                alert(pid);
        });

否则将您的事件绑定移动到负载的complete打回来。

i.e

$('something').load('someurl', function(){
 $('#activityPaganation li a').on("click", function(e) {
            e.preventDefault();     
            var pid = $(this).text();

            alert(pid);
    });
});

原因是,通过在元素上直接绑定事件,它需要存在于 DOM 中,而解决方法是将事件委托给 DOM 中任何点或文档头中存在的容器,以便将来添加元素时它会获取事件从其父级委托。它实际上使用事件冒泡来实现此效果。

See http://learn.jquery.com/events/event-delegation/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

点击问题:动态生成的链接不触发点击功能 的相关文章

随机推荐