Как имитировать jQuery.live () или использовать 2 версии jQuery при наличии библиотеки Prototype? - PullRequest
0 голосов
/ 04 августа 2010

Мы визуализируем наш контент внутри HTML-оболочки, предоставляемой клиентом.Эта HTML-оболочка содержит ссылку на jQuery 1.2.6, так что это то, что я использовал для моей функциональности jQuery до сих пор.

Проблема, с которой я сталкиваюсь, заключается в том, что я динамически отрисовываю контент, для которого требуется событие click, связанное с ним.Событие click связано с элементами в $ (document) .ready ().Поэтому мне нужна функциональность функции .live (), которая доступна в версии 1.3+.

Так что мне интересно, какие у меня варианты?

Могу ли я как-нибудь имитировать функциональность .live (), чтобы мне не понадобилась функция, предоставляемая библиотекой jQuery?

Нужно ли включать новую библиотеку jQuery в наш контент?Это не идеально, потому что это вызывает конфликты, которыми нужно управлять, и мы уже управляем конфликтами с библиотекой Prototype, которую кто-то еще включил в оболочку со следующей строкой:

jQuery(document).ready(function ($) {

, если кто-то не можетПокажите мне простой способ сделать это?

... или я верну клиенту сообщение о том, что пора им обновить свой jQuery?Я не знаю, вероятно ли это произойдет.

Кто-нибудь может предложить решение этой проблемы?Спасибо

Ответы [ 2 ]

6 голосов
/ 04 августа 2010

Вы можете просто свернуть свою собственную делегацию события. Например, вместо привязки к динамически создаваемым элементам, например ::100100

$('.foo').click(function() { /* foo handler */ });

Вместо этого вы можете прикрепить обработчик к элементу более высокого уровня, например к документу, и отфильтровать события щелчка:

$(document).click(function(evt) {
    var $target = $(evt.target);
    if ($target.is('.foo') || $target.parents('.foo').length > 0) {
        /* foo handler */
    }
});

Это основная идея, с которой live (и более новый делегат ) работают.

<ч /> * отредактированный пример, чтобы проверить также родительские элементы цели события

0 голосов
/ 04 августа 2010

Можете ли вы использовать плагин livequery?Должно работать с этой версией.

http://plugins.jquery.com/project/livequery/

...