0

首先让我说我看过这篇文章

它说(和api.jquery.com 一样.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)
}

上面的代码没有运行。我如何在 jquery 中创建一个事件,它可以在尚不存在的元素上运行?

链接在这里

4

1 回答 1

5

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

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

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

document应该是最接近性能增益的静态元素。

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

$(document).on("mouseenter", 'img#playerImg',function () {
    console.log("works");
});
于 2013-08-30T23:00:05.637 回答