jsfiddle to debug :
http://jsfiddle.net/ZpsCX/
较新的更新:
这是 HTML
<li>Something</li>
<div class='a'>
<div class='x'>REMOVE</div>
</div>
im试图通过转到父级然后之前删除LI:
$('.x').click(function(){
$(this).parent().prev().remove();
});
但是如果我用这个
$('.x').click(function(){
if(bla bla bla){ // and it returns TRUE
$(this).parent().prev().remove();
}
});
它不起作用
,既然您终于在小提琴中展示了完整的代码,我可以告诉您,问题是您在尝试执行$(this).parent().prev().remove();
之前删除了this
引用的元素,但这不起作用,因为一旦它消失this
就没有父级......
您需要以如下方式进行相反的操作:
$(".x").live("click", function(x) {
// if clicked ".x" has no siblings it must be the last one
// in the current group
if ($(this).siblings(".x").length == 0) {
$(this).parent().prev().remove();
}
$(this).remove();
});
http://jsfiddle.net/ZpsCX/12/
请注意,li 元素应该属于 ul 或 ol,并且将div 作为 li 的同级是无效的(即使大多数浏览器对此很宽容并让你侥幸逃脱)。
我稍微修改了你的小提琴。你需要确保jQuery被包含在一个,然后把你的代码包装在:
$(document).ready(function() {
$('.x').click(function(){
if(true){ // and it returns TRUE
$(this).parent().prev().remove();
}
});
});
您的原始代码将与此一起使用。
http://jsfiddle.net/ZpsCX/4/
你的代码不起作用的原因是,带有 class = 'x'
的div 没有嵌套在 li 标签内,所以对 .parent 的调用永远不会找到 li。
您可以将div 嵌套在 li 中并使用以下代码:
.HTML:
<ul>
<li>
Something
<div class='a'>
<div class='x'>REMOVE</div>
</div>
</li>
<li>
Something Else
<div class='a'>
<div class='x'>REMOVE</div>
</div>
</li>
</ul>
JQUERY:
$('.x').click(function(){
$(this).parents('li').remove();
});
JSFIDDLE 示例
固定:http://jsfiddle.net/ZpsCX/11/
我删除了 if 语句,因为它总是返回 true。您还需要包含 jQuery 并添加一个包装器:)