событие клика с использованием jquery live - PullRequest
0 голосов
/ 16 марта 2011

У меня есть следующий скрипт, который работает до тех пор, пока статический HTML

$('li.tab').each(function(index) {
    $("#tab" + index ).click(function() {$("#tabs").tabs( "select" , index  );});
});

Вот как выглядит статический HTML:

<div class="item" id="tab0"><div class="icon" style="background-image: url('http://intranet/icon0.png');"></div> Default</div>
<div class="item" id="tab1"><div class="icon" style="background-image: url('http://intranet/icon1.png');"></div> Reports</div>
<div class="item" id="tab2"><div class="icon" style="background-image: url('http://intranet/icon2.png');"></div> Other</div>

Если я использую базу данных длясгенерировать 3 html-строки с помощью jquery / ajax. Нужно ли использовать функцию live jquery для подключения события click, как показано в приведенном выше сценарии?

Если да, как мне это сделать?

Ответы [ 3 ]

1 голос
/ 16 марта 2011
$('.your_target_class').live('click', function () {
    //your code here.
});
1 голос
/ 16 марта 2011

Вместо .live (), используйте .delegate (), который вы привязываете к объекту, который окружает то, на что вы нацеливаетесь.Вы можете связать цепочку .delegate () и повысить ее производительность (вы можете посмотреть ее здесь http://jquerybyexample.blogspot.com/2010/08/bind-vs-live-vs-delegate-function.html)

. Также не забудьте использовать .die () /. Undelegate (), иначесуществует риск запуска нескольких запросов (т. е. если ваше объявление .live () вызывается несколько раз, событие click срабатывает несколько раз.tabs )

Обратите внимание, в jQuery 1.4.2 есть ошибка в .live (), примите это во внимание.

1 голос
/ 16 марта 2011

да, вам нужно использовать вживую

$('li.tab').each(function(index) {

  $("#tab" + index).live('click', function() {
    // ...
  });

});
...