2016-08-21 84 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