当前位置: 首页 > 面试题库 >

jQuery单击不适用于动态创建的项目

翟俊茂
2023-03-14
问题内容

我有一段jQuery,它会循环遍历给定div(#container)中的每个元素,并且每次单击范围时都会发出JavaScript警报。如果<span>的值是静态的,则效果很好。

但是,如果我使用如下代码:

$(someLink).click(function(){
   $("#container").html( <new html with new spans> )
});

jQuery代码不会触发。奇怪的是

我的问题是:我的Click事件是否不适用于动态创建的项目?我想我必须在我的文档中添加准备好的内容或心跳脚本(每100毫秒触发一次)来关联事件?


问题答案:

做这个:

 $( '#wrapper' ).on( 'click', 'a', function () { ... });

其中,#wrapper在其中添加了动态链接的静态元素。

因此,您有一个包装器,该包装器被硬编码到HTML源代码中:

<div id="wrapper"></div>

并在其中填充动态内容。想法是将事件委托给该包装器,而不是直接在动态元素上绑定处理程序。

顺便说一句,我推荐Backbone.js-它为该过程提供了结构:

var YourThing = Backbone.View.extend({

    // the static wrapper (the root for event delegation)
    el: $( '#wrapper' ),

    // event bindings are defined here 
    events: {
        'click a': 'anchorClicked'
    },

    // your DOM event handlers
    anchorClicked: function () {
        // handle click event 
    }

});

new YourThing; // initializing your thing


 类似资料:
  • 问题内容: 我的要求是创建等于json数组计数的按钮数。我成功地在jquery中动态创建了按钮。但是单击动作不会调用jquery的.ready函数中的方法。我曾尝试在SO中搜索。找不到解决方案,但对我没有任何帮助。我对jquery非常陌生。请帮忙… 我的代码:jQuery: 编辑-示例.on方法代码-单独的文件:工作-谢谢 问题答案: 动态创建按钮是因为,如果使用jquery 1.7,则需要使用m

  • 问题内容: 我正在将多页php + jquery网站转换为单页角度应用程序。但是我已经用jquery编写了很多代码,因此只打算将php换成与路由等有关的角度。 我遇到的一个我无法弄清楚的问题是,在转换停止工作之前,我一直用尽的jquery click事件。如果更改代码以使其通过ng- click触发,则它将起作用,即使我从控制台调用该函数也是如此。jQuery正常工作,我在提到的函数中放了一些jQ

  • 问题内容: 我正在竭尽全力试图找出为什么鼠标悬停事件无法与具有从ajax动态创建的元素的.on处理程序一起使用的原因。似乎唯一起作用的是带有.live的代码,但我知道它已被弃用。 但是,当我尝试使用.on时,它将不起作用-无论我尝试了什么变体(document.ready,.mouseover等) 事件处理程序位于代码的底部,因此它们最后执行。有人知道我在做什么错吗? 问题答案: 使用与新生成的元

  • 问题内容: 我在用 单击到容器上的按钮,但随后进行了ajax调用,并且内容使用新内容进行了更新,然后当我尝试单击它时将无法工作…单击该按钮时,将不会返回任何内容。 我什至试过 要么 我该如何运作? 编辑: 我的HTML: 问题答案: 应该以这种方式完成。 如果您的容器在ajax请求期间没有更改,则性能更高: 始终将委托事件绑定到将包含动态元素的最接近的静态元素。

  • 问题内容: 我正在使用jQuery CSS函数设置某些元素的样式 这可行,但是页面加载后会动态创建部分元素。这应该是 我被创建的事件困住了。有任何想法吗? 问题答案: 创建的元素没有事件(无论如何都无法通用)。你可以 将规则添加到样式表,以便将其自动应用于新创建的元素 创建元素时,链接 css() 方法: 动态创建一个新的样式表:

  • 问题内容: 我实现了Android 与。在这里,我有一个问题,当我单击列表项时,当闪烁的颜色也没有到来时,即橙色,则不执行任何操作。因此,您对我的问题的这个答案有任何想法吗? 我也将此代码放入Main ListActivity。 问题答案: 您首先要注意的是,每当元素中存在诸如按钮之类的Clickable元素时,它们都会控制click事件。因此,您将没有机会接受click事件。 您要做的只是将Li