jquery нажмите с петлей? - PullRequest
1 голос
/ 20 июля 2009

Я пытаюсь поставить функцию щелчка в цикле php.

Но он выполняет часть или всю функцию во всех ссылках ..

Я думал, что если использовать "это", это решит проблему, но это не работает ..

Вот jquery:

if ($('#like').hasClass('notlike')); {
            $('.likeon').click(function () {

                $('#like span.message', this).text('Yes I Like It');
                      });
         };

Вот HTML:

<li id="like" class="notlike">
<span>(3) Likes <br>
   <span class="message">
   <a href="javascript:;" class="likeon">Do You Like it?</a>
   </span>
</span>
</li>

Я работаю с php, поэтому ссылка появляется 5 раз. Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 20 июля 2009

Я думаю, у вас есть несколько проблем.

Идентификаторы элементов должны быть уникальными внутри домена. если вы перебираете этот фрагмент html, вы получите несколько тегов li с идентификатором like. Вам нужно удалить идентификатор и использовать класс

* 1005 например *

<li id="like" class="notlike">
<span>(3) Likes <br>
   <span class="message">
   <a href="javascript:;" class="likeon">Do You Like it?</a>
   </span>
</span>
</li>

Это позволит вам написать скрипт следующим образом

$('li.someClass a.likeon').click ( function(){
   $(this).parent().text('Yes I Like It');
});

Кроме того, селектор контекста, который вы пробовали, никогда бы не сработал, так как при передаче в контекст «this» он ищет элементы ниже, соответствующие селектору. У вас не было дочерних элементов привязки с идентификатором like.

Если вы изменяете эти классы в сценарии в течение срока жизни страницы, я бы посоветовал использовать вместо этого .live. Это будет означать, что событие сработает даже для якорей, которые в настоящее время не имеют класса likeon Если позже вы измените якорь на этот класс, он все равно будет работать

$('li.someClass a.likeon').live('click' , function(){
   $(this).parent().text('Yes I Like It');
});
1 голос
/ 20 июля 2009

Было бы лучше определить обработчик события щелчка следующим образом

$('#like.notlike .likeon').click(function () {
    $(this).parent().text('Yes I Like It');
});

Это еще короче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...