如何使用jquery检查两个属性是否具有相同的值?

Abe*_*Abe 4 jquery

我正在尝试编写一个jquery选择器,它将选择对其两个属性具有相同值的对象.

像这样的东西:

$('div[attr1=attr2]')
Run Code Online (Sandbox Code Playgroud)

鉴于:

<div attr1="foo" attr2="bar">A</div>
<div attr1="bar" attr2="bar">B</div>
<div attr1="foo" attr2="bar">C</div>
<div attr1="foo" attr2="foo">D</div>
Run Code Online (Sandbox Code Playgroud)

我希望它返回到B和D div的链接.

有什么想法吗?

mdm*_*dma 7

您可以使用带参数的自定义选择器执行此操作.

$('div:attrEqual(attr1 attr2)')
Run Code Online (Sandbox Code Playgroud)

您可以像这样定义自定义选择器:

$.expr[':'].attrEqual = function(obj, index, meta, stack) {
  var attrs = meta[3].split(" ");
  return $(obj).attr(attrs[1]) == $(obj).attr(attrs[0]);
};
Run Code Online (Sandbox Code Playgroud)

为了提高性能,请添加[attr1][attr2]到选择器,以便本机DOM筛选出不具有这两个属性的节点.


Lau*_*tin 5

我认为属性选择器只允许您与常量值进行比较.但您可以使用该.filter()功能进行比较:

$('div[attr1][attr2]').filter(function(index) {
  return $(this).attr('attr1') == $(this).attr('attr2');
})
Run Code Online (Sandbox Code Playgroud)