动态生成的链接上的 jQuery 事件

标签 jquery dynamic click hyperlink bind

我有一个由另一个函数动态创建的链接列表,它们的形式为 <a id="hi-1">test</a> <a id="hi-2">test</a>等等

我正在尝试定位这些链接并将单击/鼠标悬停事件绑定(bind)到它们。以下是定位这些链接之一的代码 (#hi-1):

$(function() {

    $("#hi-1") .bind("mouseover", highlight);
    $("#hi-1") .bind("mouseleave", highlight);
            $("#hi-1") .bind("click", highlight);

    });
    function highlight(evt){
    $("p#p-1").toggleClass("highlighted");
    }

这应该切换 的类名。

我似乎无法让它工作,我相信这可能与链接是动态创建的事实有关。然而,我几乎没有 jQuery 经验,我可能会以错误的方式进行操作。

非常感谢任何帮助。

最佳答案

选择器在创建时应用。您选择元素,然后绑定(bind)到这些元素,而不是绑定(bind)到选择器。

但是,您可以利用事件冒泡——祖先元素会收到子元素上的事件通知。 jQuery 为此提供了一个漂亮的语法 delegate :

$('#containerElement').delegate('#hi-1', 'click mouseover mouseleave', highlight);

这假设#containerElement 是所有将匹配的元素的祖先元素。

<小时/>

但是,如果您只有一个元素(如建议的为其提供一个 ID),那么在创建元素时绑定(bind)处理程序可能会更容易。

关于动态生成的链接上的 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6160716/

相关文章:

javascript - asp.net javascript .click() 事件未在服务器上触发

javascript - 表行的剪贴板副本

php - 在 WHERE 子句中使用动态变量进行查询

algorithm - 关于分配,动态规划。让我的代码更有效率?

javascript - 防止多次点击触发

jquery - 如何使用 iDangerous Swiper 和 jquery .click();同时

javascript - jQuery 鼠标悬停事件正在复制

javascript - 在 console.log 中打印 Javascript 对象时的不同行为

javascript - JQuery 将值传递给接受事件对象参数的函数

c# - 如何在表达式树中实例化和初始化动态对象?