2015-08-28 85 views
0

如果元素爲$("[id$=linkbuttonabsd]"),我想提醒b,否則請提示a如何比較2個DOM元素?

JavaScript代碼:

$("body").find("a").click(function (e) { 
    var herf = $("body").find("a"); 
    var link = $("[id$=linkbuttonabsd]"); 
    var isb = false; 
    for (var i = 0; i < herf.length; i++) { 
     if (herf[i] == link) { 
      isb = true; 
     } 
    } 
    if (isb) { 
     alert("b"); 
    } else { 
     alert("a"); 
    } 
}); 

但我不能herf[i] == link實現這一目標。應該怎麼做?

+1

您能詳細說明您想達到的目標嗎? – Satpal

+0

因爲它們都是不同的東西。 – Jai

回答

3

$.fn.is()可以使用。

檢查當前匹配組針對一個選擇器,元件,或jQuery對象元素和return true如果這些元素中的至少一個給定的參數相匹配。

if(herf.eq(i).is(link)){ 
    //Condition is ture 
} 

還獲得在指定索引使用.eq()的元素,而不是[]

你不通過對象需要循環。 代碼可以減少到

$("body a").click(function(e) { 
    var herf = $("body a"); 
    var link = $("[id$=linkbuttonabsd]"); 
    var isb = herf.is(link); 

    if (isb) { 
     alert("b"); 
    } else { 
     alert("a"); 
    }  
}); 
+1

非常感謝你的工作 – beginerdeveloper

0

嘗試使用$.is匹配的元素。這裏是例子:

if ($(herf[i]).is("#linkbuttonabsd")) { 
    isb = true; 
} 
+1

'#linkbuttonabsd'與''[id $ = linkbuttonabsd]''不一樣。 – Regent

+0

'[id $ = linkbuttonabsd]'返回一組元素,這就是爲什麼不能用這種方式進行比較的原因。無論如何,我的意思是解決他的問題。 –

+0

[這個小提琴](http://jsfiddle.net/72x81buo/)就是我所說的。 – Regent

0

在此行中:

herf[i] == link 

你比較jQuery對象的元素,這將始終返回false,這是怎麼==操作員的工作量。下面將如預期:

href[i] == link[0] 

但是好像你要檢查是否有[id$=linkbuttonabsd]的元素也是體內的鏈接。爲此,您的代碼可以簡化爲:

var isb = $("body a[id$=linkbuttonabsd]").length > 0;