2016-08-21 82 views
0

术语如何在jQuery结果中查找jquery元素?

我的术语可能是不完美所以在这里我试图解释我所说的“结果”或“元素”的意思是,我用这句话作为同义词。

$(“IFRAME”)返回对象包含结果像

[0] JQuery object ... (iframe #0) 
[1] JQuery object ... (iframe #1) 

在这段代码中,我试图用这些结果(儿童或元素)的工作。我不是在谈论iframe的嵌套元素,而只是关于iframe。

说明

我已经创造了一些功能来筛选的结果$( “IFRAME”)。我需要创建函数来“倒置”结果。所以我将使用函数myfunction找不到的$(“iframe”)的结果。

我的问题是,我不知道如何识别变量iframes中的每个结果或iframe元素?我知道iframe in iframes是错误的 - 我不能使用in,因为它搜索key in array或对象。但我需要找到确切元素在变量I帧...

var jif = $("iframe"); 
    var iframes = jif.filter(myfunction); 
    jif.each(
     function(k, iframe, iframes) { 
     if (!(iframe in iframes)) 
      iframe.remove(); 
    }); 

所以代替部分:if (!(iframe in iframes))我需要得到: 如果jQuery的元素不在 jQuery的I帧集合目的。

很抱歉,但我不知道该如何解释更好

+1

你的问题仍然不如你以前的问题。这听起来像是一个X-Y问题。如果你告诉我们你实际上正在试图达到的目标会更好,而不是你目前尝试的方法有什么问题。 –

+0

也许看看.not()选择器? – mplungjan

+0

那么,第一种方法是找到一些包含一些元素的iframe。相反,新方法应该排除iframe的先前结果,并且**获取前一个函数未找到的其余iframe **。其实际用途是第一个函数可用于将样式应用于iframe的嵌套元素(如WYSIWYG编辑器),第二个函数可用于删除所有不是所见即所得编辑器的iframe。 – user1141649

回答

2

如果你想检查一个特定的元素是一些jQuery集合里面你可以使用index方法:

divs = $('div') 
 
divsA = $('div.a') 
 
divsB = $('div.b') 
 

 
a = $('#a') 
 
b = $('#b') 
 
c = $('#c') 
 
console.log("check if #a, #b, #c in divs") 
 
console.log(divs.index(a) >= 0) 
 
console.log(divs.index(b) >= 0) 
 
console.log(divs.index(c) >= 0) 
 

 
console.log("") 
 
console.log("check if #a, #b, #c in divsA") 
 
console.log(divsA.index(a) >= 0) 
 
console.log(divsA.index(b) >= 0) 
 
console.log(divsA.index(c) >= 0) 
 

 
console.log("") 
 
console.log("check if #a, #b, #c in divsB") 
 
console.log(divsB.index(a) >= 0) 
 
console.log(divsB.index(b) >= 0) 
 
console.log(divsB.index(c) >= 0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="a" class="a">Div with class a</div> 
 
<div id="b" class="b">Div with class b</div> 
 
<div id="c" class="a b">Div with class a and b</div>

jQuery的index函数也适用于不是jQuery的元素,也是一个常规的元素m个元素:

divsA = $('div.a') 
 

 
a = document.getElementById('a') 
 
b = document.getElementById('b') 
 
console.log("check if #a, #b divsA") 
 
console.log(divsA.index(a) >= 0) 
 
console.log(divsA.index(b) >= 1)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="a" class="a">Div with class a</div> 
 
<div id="b" class="b">Div with class a</div>

至于原来的问题,这是相关代码:

var jif = $("iframe"); 
var iframes = jif.filter(myfunction); 
jif.each(
    function(k, iframe) { 
     if (!(iframes.index(iframe) >=0)) { 
      iframe.remove(); 
     } 
    } 
); 
+0

谢谢。因此,如果我理解正确,我的解决方案是将if语句更改为if(!(iframes.index(iframe)> = 0))' – user1141649

+0

要么,要么检查iframes.index(iframe) === -1' – Dekel

0

基础上德克尔的答案,我已经纠正代码:

var jif = $("iframe"); 
var iframes = jif.filter(myfunction); 
jif.each(
    function(k, iframe) { 
     if (!(iframes.index(iframe) >=0)) 
      iframe.remove(); 
     }); 

我已删除匿名函数中的第三个参数iframes,因为它未定义。

+0

你应该保留我接受的答案(你也可以编辑我的答案,并在那里添加最终的解决方案)。不爽! – Dekel

+0

我无法编辑它我没有在此网页上看到必要的html元素或其描述。对不起 – user1141649

+0

编辑我的答案,解决你的具体问题的代码被添加到那里。我认为你可以再次接受我的答案,因为它原来是被接受的答案。 – Dekel