сначала позвольте мне сказать, что я видел this post.Как заставить функции jquery работать с динамически меняющимися элементами
, который говорит (как и 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, которое может работать на элементах, которые еще не существуют?
Посмотрите на принятый ответ на этот пост: http://stackoverflow.com/questions/9944499/how- to-dynamic-rebind-jquery-objects Надеюсь, что это поможет. –
Вы используете прямое событие, и вам нужно использовать делегированное событие, то есть вы прикрепляетесь к контейнеру, который содержит все, на что вы действительно хотите присоединить обработчик. См. Раздел [Прямой и делегированный события] (http://api.jquery.com/on/) для on() – ernie