2010-03-30 49 views
2

我有類似以下內容...使用python腳本來填充JSON。jquery click an img hide an LI

<ul> 
<li id="p1" class="x">val1 <img id="ip1" class="redx" src="redx.gif"/></li> 
<li id="p2" class="x">val2 <img id="ip2" class="redx" src="redx.gif"/></li> 
<li id="p3" class="x">val3 <img id="ip3" class="redx" src="redx.gif"/></li> 
<li id="p4" class="x">val4 <img id="ip4" class="redx" src="redx.gif"/></li> 
</ul> 

我想一些jQuery來...當單擊紅色的X圖像..隱藏整個Li電池它在不在。

我已經嘗試了一些事情,但...到徒勞無功。

編輯:總而言之 ..這似乎並沒有觸發......這似乎是一個基本問題。

$(function(){ 
    function removeli() { 
     alert("got here" + this.id); 
    } 
    $("redx").click(removeli); 
}); 

關於最終jQuery代碼的任何想法來完成此?

回答

3

需要類

$('.redx').live('click', removeli); 

更新代碼.前綴現場使用:使用委託

$(function() { 
    $('.redx').live('click', function() { 
     $(this).parent('li').hide(); // or .remove() 
    }); 
}); 

如果<ul>不改變(只會工作,只有<li>「 s內):

$(function() { 
    $('ul').delegate('img', 'click', function() { 
     $(this).parent('li').hide(); 
    }); 
}); 
+0

大聲笑即使這是真的。修復語法後仍然沒有去。在firebug中我應該看到一個onclick添加到代碼中的所有li的? – Kirby 2010-03-30 15:20:46

+0

這很可能是因爲您在設置點擊處理程序後動態添加行。使用'live'或'delegate'來添加事件處理程序,如@Tatu建議的那樣。這也適用於新插入的元素。 – Anurag 2010-03-30 15:23:41

+0

我終於明白了什麼是錯誤瓦特/ TATU的語法。感謝您的更新。謝謝大家的幫助! :) 問題解決了。 – Kirby 2010-03-30 15:36:08

0
$(".redx").click(function(){ 
    $(this).parent().hide(); 
}); 
+0

onclick似乎並沒有被解僱。 – Kirby 2010-03-30 15:24:39