2009-07-20 94 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'); 
}); 

點擊事件處理它甚至更短。