检查DIV内是否存在元素
问题描述:
我想单击时移动div内的元素,除非它已经在它内部。我想是这样......检查DIV内是否存在元素
点击标签>如果元素是DIV无能为力>否则移动元素到DIV
http://jsfiddle.net/establish/Xhhe8/
HTML
<ul>
<li><a href="#" class="tag">Art</a></li>
<li><a href="#" class="tag">Computing</a></li>
<li><a href="#" class="tag">Design</a></li>
</ul>
<div id="crate">
</div>
jQuery的
$('.tag').on('click', function(event) {
if ($('#crate').has(this)) {
// do nothing
}
else {
$(this).appendTo('#crate');
}
});
它不起作用。也不知道如何表示“什么也不做”,通常我只是使用单独的IF语句,因此不需要表示它。我可以这样做“无所作为”并禁用点击吗?
$(this).off();
答
这应该做到这一点..
$('.tag').on('click', function(event) {
var self = $(this);
if (self.closest('#crate').length) {
// do nothing
}
else {
self.appendTo('#crate');
}
});
答
您通常使用if not
表示if
声明相反(即!=
更换==
):
$('.tag').on('click', function(event) {
if ($(this).parent().get(0) != $('#crate').get(0)) {
$(this).appendTo('#crate');
}
});
不是检查是否该元素存在于父项中,为什么不比较父项?
答
盖比的回答会的工作,但我宁愿将其结构没有空if
块这样的:
$('.tag').on('click', function(event) {
var self = $(this);
if (self.closest('#crate').length == 0) {
self.appendTo('#crate');
}
});
答
你可以试试这个(我只是调整了一下你的代码):
$('.tag').on('click', function(event) {
if ($('#crate').find(this).length) {
// do nothing
}
else {
$(this).appendTo('#crate');
}
});
答
我来!
或者这样:
$('.tag').click(function() {
if ($(this).parent().attr('id') != "crate") {
$(this).appendTo('#crate')
}
});
答
我会做以下,根据Alex的答案:
$('.tag').on('click', function(event) {
if ($('#crate').find(this).length < 1) {
$(this).appendTo('#crate');
$(this).off('click')
}
});
我认为,如果条款使得在这种情况下,更多的意义;我们只是检查箱子元素是否有'this'。 (if($('#crate')。has(this))“的语义是误导性的,因为当它实际上返回一个空数组时,它将会得到一个布尔值,该数组在JavaScript中的计算结果为true。所以,即使“#crate”具有实际的元素,if条件始终为真。
好点。我以为他可能最终想要删除元素,如果它在里面.. –
我确实想删除它!谢谢,应该说明。 –
@DanChristian - 删除什么和在什么情况下? – jfriend00