jquery点击循环?

时间:2009-07-20 18:12:12

标签: jquery

我试图在php循环上放置一个click函数。

但它在所有链接上执行部分或全部功能..

我认为如果使用“这个”它会解决它,但它不起作用..

这是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 个答案:

答案 0 :(得分:3)

我认为你有一些问题。

元素ID在dom中必须是唯一的。如果你循环遍历那个html片段,那么你最终会得到一个id为like的多个li标签。 您需要删除id并使用类

e.g

<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'上下文时,它会查找下面与选择器匹配的元素。你没有任何具有id的锚的子元素。

如果您在页面的生命周期内在脚本中更改这些类,那么我建议使用.live。这意味着即使对于目前没有类似的类别的锚点,事件也会触发。如果您以后更改锚点以使该类仍然运行

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

答案 1 :(得分:1)

最好像这样定义点击事件处理程序

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

它甚至更短。