Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 点击问题:动态生成的链接不触发点击功能_Javascript_Jquery_Html - Fatal编程技术网

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

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>

下面是两段代码,出于某种原因,什么都没有发生,但是来自同一个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);
    });
});
  • 一,
$(文档).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) {