JQuery. Live не называется - PullRequest
       4

JQuery. Live не называется

1 голос
/ 23 февраля 2012

скажем, на HTML-документе у меня есть несколько ссылок, например:

<a href="#path" class="the_link_1">Click here 1</a>
<a href="#path" class="the_link_2">Click here 2</a>
<a href="#path" class="the_link_3">Click here 3</a>
<a href="#path" class="the_link_4">Click here 4</a>
etc...

У меня есть такой код jquery:

$("a[class^=the_link_]").each(function(){

    $(this).live("click", function(){

        alert($(this).html());

    });

});

Почему это работает при использовании$(this).click(function(){ ... }); но это не работает, когда я использую $(this).live("click", function(){ ... });?

Спасибо

Ответы [ 3 ]

6 голосов
/ 23 февраля 2012

.live странно и работает только с селекторами.Я имею в виду, что $('div').live работает, а $(div).live - нет.

Кроме того, вам не нужно .each при применении обработчика щелчка к нескольким элементам.$("a[class^='the_link_']").click работает как положено.

Ваш код должен быть:

$("a[class^='the_link_']").live("click", function(){
    alert($(this).html());
});

ОБНОВЛЕНИЕ: Начиная с jQuery 1.7, .live() устарело, используйте .on() вместо.

$(document).on('click', "a[class^='the_link_']", function(){
    alert($(this).html());
});

ПРИМЕЧАНИЕ. Если все теги <a> находятся в одном контейнере, вы можете заменить $(document) этим контейнером (если он всегда находится в DOM).

РЕДАКТИРОВАТЬ: Вам действительно нужно использовать .live здесь?Он используется для привязки события к элементам, даже если они добавляются в DOM позже.Если вы никогда не добавляете больше тегов <a> через JavaScript, просто сделайте это:

$("a[class^='the_link_']").click(function(){
    alert($(this).html());
});
1 голос
/ 23 февраля 2012

Вы забыли апострофы вокруг the_link_.И все это слишком сложно.

Просто будьте проще:

$("a[class^='the_link_']").live("click", function(){
        alert($(this).html());
});​

live устарело, кстати, с jQuery 1.7.Вместо этого используйте on.

$(document).on("click", "a[class^='the_link_']", function(){
    alert($(this).html());
});​

Демо здесь: http://jsfiddle.net/Sfsdx/

.on () - jQuery API

Smile!:)

0 голосов
/ 23 февраля 2012

Какую версию jQuery вы используете? Если вы используете 1.7.x - метод .live () устарел. Смотрите официальную документацию jQuery .

Тем не менее, вы можете попробовать метод .on:

$(this).on('click', function(){ .... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...