2013-07-15 4 views
0

Я обновляю jQuery на своем веб-сайте до jQuery v1.10.1 из 1.4.2. Я меняю все функции .live на .on. Теперь у меня проблемы с изменением одного из них.jquery .live to .on в обновлении jQuery

function tb_init(domChunk){ 
    $(domChunk).live('click', function(){ 
     var t = this.title || this.name || null; 
     var c = $(this).parent().parent().find('.quotation').html(); 
     var a = this.href || this.alt; 
     var g = this.rel || false; 
     var o = $(this); 
     tb_show2(t,c,a,g,o); 
     this.blur(); 
     return false; 
    }); 
} 

Я попытался изменить его:

$(document).on("click", domChunk, function() { 

и:

$(document).on("click", $(domChunk), function() { 

Но и не похоже на работу. Сам domChunk является селектором так: "#myid li" Ошибки я получаю: Uncaught TypeError: Объект # имеет никакого метода «размытость»

Благодарности

+0

Можете ли вы сделать скрипку записи демо проблему? '$ (document) .on (" click ", domChunk, function() {' должен работать. – tymeJV

+0

Когда/где именно вы получаете эту ошибку? – Pointy

+4

'this' является dom-узлом, вы, вероятно, имели в виду' o.blur () 'вместо. –

ответ

4

this является ссылкой на объект DOM, а не к объекту JQuery ,

Попробуйте вместо этого:

$(this).blur(); 

или:

$(this).trigger('blur'); 

или в использовании кода o вместо $(this)

+2

Или, так как он уже попал в локальный объект: 'o.blur();' –

+0

@ColinDeClue это тоже верно. – Neal

3

Я мог бы быть неправильно, но вы пробовали использовать $ (this) .blur() вместо this.blur? Так как это функция JQuery ...

редактирования: жаль, что я не обновляли страницу, прежде чем ответить