Javascript 如何使jquery函数与动态变化的元素一起工作

Javascript 如何使jquery函数与动态变化的元素一起工作,javascript,jquery,html,Javascript,Jquery,Html,首先让我说我见过 也就是说,.live()和.on()允许您分配一个jquery事件,该事件甚至适用于将来的元素。但是,我的以下jquery: $("#playerImg").on("mouseenter",function () { console.log("works");}); 开始时工作,但运行此代码后: function move(moveTo) { document.getElementById(player.currentLocation).inne

首先让我说我见过

也就是说,
.live()
.on()
允许您分配一个jquery事件,该事件甚至适用于将来的元素。但是,我的以下jquery:

    $("#playerImg").on("mouseenter",function () {
        console.log("works");});
开始时工作,但运行此代码后:

function move(moveTo) {
   document.getElementById(player.currentLocation).innerHTML = "";
      player.currentLocation = moveTo;
   document.getElementById(player.currentLocation).innerHTML += player.displayText;
}
以下是相关变量

var player = {
    "displayText" : "<img src = 'http://3.bp.blogspot.com/-kAhN0HX-MBk/T_5bApfhbJI/AAAAAAAAAuI/lUww8xT9yV8/s1600/smileys_001_01.png'" +
        id='playerImg' "class='onTop' alt='you' border='0' />",

   "currentLocation": 0 //(i use a 5 * 5 table with id's 0-24)
}
var播放器={
“显示文本”:“,
“currentLocation”:0/(我使用id为0-24的5*5表)
}
上面的代码没有运行。我如何在jquery中生成一个事件,它可以在不存在的元素上运行

使用
.on()
就像应用直接事件一样,直接事件更快,但不适用于动态元素

您需要像使用动态元素那样使用
.on()

$(document).on("mouseenter", '#playerImg',function () {
    console.log("works");
});
文档
应该是最接近性能增益的静态元素

旁注,
id
必须是唯一的,请将其更改为
class
。上述代码可能不起作用,因为它使用id。如果是这种情况,并且您不想出于任何原因进行更改,请使用以下代码:

$(document).on("mouseenter", 'img#playerImg',function () {
    console.log("works");
});
像应用直接事件一样使用
.on()
,这会更快,但不会应用于动态元素

您需要像使用动态元素那样使用
.on()

$(document).on("mouseenter", '#playerImg',function () {
    console.log("works");
});
文档
应该是最接近性能增益的静态元素

旁注,
id
必须是唯一的,请将其更改为
class
。上述代码可能不起作用,因为它使用id。如果是这种情况,并且您不想出于任何原因进行更改,请使用以下代码:

$(document).on("mouseenter", 'img#playerImg',function () {
    console.log("works");
});

看看这篇帖子上的公认答案:希望这会有所帮助。您使用的是直接事件,需要使用委派事件,这意味着您要附加到一个容器,其中包含您实际想要附加处理程序的内容。请参阅for on()查看本文中接受的答案:希望这会有所帮助。您使用的是直接事件,需要使用委派事件,这意味着您要附加到一个容器,其中包含实际要附加处理程序的内容。有关重用id的详细信息,请参阅。应该是一个类,而不是一个id。我知道id的事情,如果它们中的两个从来没有同时存在,这仍然是一个问题吗?@tryingtogetprogramming如果它们从来没有同时存在,这是可以的。并且做
$(document)。on(触发器,元素,函数(){
适用于任何类型的jquery事件?@tryingtogetprogrammingstright是的!重用id的好方法…应该是一个类,而不是id。我知道id的事情,如果它们两个从来都不同时存在,这仍然是一个问题吗?@tryingtogetprogrammingstright如果它们从来都不同时存在,这是可以的de>$(document).on(触发器、元素、函数(){适用于任何类型的jquery事件?@tryingtogetprogramming是的!