2010-03-30 80 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