我试图在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次。我做错了什么?
答案 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');
});
它甚至更短。