Javascript 如何使用jQuery检查动态创建的元素是否已经存在?
我动态创建一个元素:Javascript 如何使用jQuery检查动态创建的元素是否已经存在?,javascript,jquery,dom,Javascript,Jquery,Dom,我动态创建一个元素: var $el = $('<div class="someclass"></div>'); 但这是错误的如果我理解,您需要在附加$el之前检查是否存在另一个,您可以执行以下操作: if ($("div.someclass").length === 0) { // it has not been created yet, create a new one var $el = $('<div class="someclass">&l
var $el = $('<div class="someclass"></div>');
但这是错误的如果我理解,您需要在附加
$el
之前检查是否存在另一个
,您可以执行以下操作:
if ($("div.someclass").length === 0) {
// it has not been created yet, create a new one
var $el = $('<div class="someclass"></div>');
}
如果您只需要一个元素,那么您应该对该元素使用一个ID,然后以类似于Michael在上面所做的方式检查它。使用
var el = $('<div id="someID" class="someClass" />');
var el=$('');
我也不清楚为什么要使用
$el
而不是仅仅使用el
如果我理解正确,您希望找到这个确切的元素是否已经在DOM中,而不是碰巧具有相同类的其他任意元素
如果是这样,我相信这会奏效
首先,将最初创建的元素作为HTMLElement
对象而不是jQuery对象获取:
var el = $el.get(0);
然后尝试在文档中删除它:
var $match = $(document).find(el);
var found = ($match.length > 0);
但是,这不会有效率-如果可以的话,将选择器文档限制在DOM的较窄部分
您的编辑建议您可以使用#target
作为选择器。您只需检查它是否有父项:
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
}
var$el=$('');
//您编写的代码可能会或可能不会将其附加到DOM
如果($el.parent().length==0){
//该元素没有添加到DOM中,因为它没有parentNode
}
但是,如果您不知道该元素的实际操作,您的代码可能会有其他问题。.someclass
类可能用于其他元素,我只想用同一个类来检查这个元素。@OmidAmraei您可以使用测试包含的元素,看看它是否已经存在。find(“div.someclass”)
中可能还有另一些someclass
的元素container@OmidAmraei那么你需要一个更好的选择器,例如一个id
属性来查找一个更具体的元素
@micha或asvar$el=$('',{'class':'someClass'})
使用$el
是一些程序员用来表示变量是jQuery对象而不是本机元素的约定。它提醒他们不必写$($el.method()
,只需写$el.method()
。@OmidAmraei然后请在jsfiddle.net上写出一个显示它的最小测试用例。@OmidAmraei p.s。查找(元素)
需要jQuery 1.6或更高版本的用户jQuery 1.7亲爱的Alnitake这没有任何意义,他是凭空创建元素的,因此dom中不能有完全相同的元素。@Esailija我假设有一些(省略的)代码可能添加了$el
,他需要稍后知道是否确实如此。
var $match = $(document).find(el);
var found = ($match.length > 0);
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
}