我动态创建一个元素:
var $el = $('<div class="someclass"></div>');
我想在某处附加元素($el
),但它不应该有id
。
我如何知道它之前是否已被追加?
修改
我认为这应该有用
if($($el, "#target").length == 0)
$("#target").append($el);
但这是错误的
答案 0 :(得分:5)
您只需检查是否有父母:
var $el = $('<div class="someclass"></div>');
//Code you wrote that may or may not attach it to the DOM
if($el.parent().length === 0) {
//The element has not been added to the DOM because it doesn't not have a parentNode
}
但是,如果你不知道该元素实际上做了什么,你的代码可能还有其他问题。
答案 1 :(得分:4)
如果我理解,您需要在添加<div class='someclass'>
之前检查是否已存在其他$el
,您可以执行以下操作:
if ($("div.someclass").length === 0) {
// it has not been created yet, create a new one
var $el = $('<div class="someclass"></div>');
}
要检查它是否已经是某个其他元素的子节点,请使用.find()
if ($("#parentNode").find("div.someclass").length === 0 {
// it has not been created yet, create a new one
var $el = $('<div class="someclass"></div>');
}
答案 2 :(得分:1)
如果我理解正确,你希望找到这个 exact 元素是否已经存在于DOM中,而不是碰巧具有相同类的其他任意元素。
如果是这样,我相信这会奏效。
首先,将最初创建的元素作为HTMLElement
对象而不是jQuery对象:
var el = $el.get(0);
然后在doc:
中尝试.find()
var $match = $(document).find(el);
var found = ($match.length > 0);
这样效率不高 - 如果可以的话,将选择器document
限制在DOM的较窄部分!
您的修改建议您可以使用#target
作为该选择器。
答案 3 :(得分:-1)
如果您只想要一个元素,那么您应该使用带有该元素的ID,然后以类似于Michael的方式检查它。使用
var el = $('<div id="someID" class="someClass" />');
我也不确定您使用$el
而不仅仅是el
的原因