2010-05-18 5 views
1

Я использую jQuery 1.3.2 и Live Query plugin. Скрипт должен работать как в FF, так и в IE6. Обновление jQuery и использование live вместо этого не является возможным.Использование livequery: Не удается найти распространенный элемент, созданный с помощью ajax

Как-то этот скрипт не будет вызываться динамически созданным элементом.

$('select').livequery('change',function(){ 
     var select_id = $(this).attr("id");                   ... 
... 
... 

}); 

$('select').livequery('mouseover',hideExtensions()); 

function hideExtensions(){ 
... 
... 
} 

В IE6 и FF функция корректно вызывается статическими (уже существующими) элементами. Однако он не вызывается динамически созданным элементом.

В чем может быть причина?

Обновление Я проверил ту же функцию с «живым». Он работал в FF, но не в IE6, конечно, нет ... Вот почему я ищу обходной путь с livequery.

ответ

0

Есть ли причина, по которой вы не можете перейти на jQuery 1.4.2 и использовать встроенный обратный вызов live?

Если livequery не работает, альтернативой, которую вы можете попробовать, является некоторая «ручная» делегирование событий с использованием некоторого базового JavaScript и полагаться на событие пузырька для непосредственного родителя. Скажем, у вас есть DOM структуры, как это:

<div id='something'> 
    <a href='#' class='some-tag'></a> 
    <a href='#' class='some-tag'></a> 
    <a href='#' class='some-tag'></a> 
    <!-- more dynamic elements 'a' tags identical to those above added here --> 
</div> 

А в вашем JavaScript:

var something = document.getElementById('something'); 

something.addEventListener('click', function(e) { 
    e = window.event || e; 

    // If the target of the event is the added anchor we're looking for 
    if (e['srcElement' in e ? 'srcElement' : 'target'].getAttribute('class') === 'some-tag') 
     // code block goes here 

    return false; 

}, false); 
+0

спасибо за ваш комментарий. причина, по которой я не хочу обновлять до 1.4.2, заключается в том, что наша программа может сломаться. – Kel