2009-07-20 60 views
1

我想在一个PHP循环上放一个点击函数。jquery点击一个循环?

但它做的部分或全部上所有链接的功能..

我想如果用“这个”它会解决它,但它不工作..

这里是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倍。我究竟做错了什么?

回答

3

我认为你有几个问题。

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

<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'); 
}); 
+0

这很好用,只需要把它放回链接上方的li去除“notlike”并将其更改为不同的链接。但仅限于那一个链接。 – matthewb 2009-07-20 18:58:03

1

会更好,像这样定义

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

点击事件处理它甚至更短。