2015-08-28 51 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;