Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery检查动态创建的元素是否已经存在?_Javascript_Jquery_Dom - Fatal编程技术网

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或as
var$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
}