.is(':even')不适用于变量选择器?

Jam*_*ber 6 variables jquery jquery-selectors

我使用jQuery来检查元素是奇数还是偶数:

 $("#map183").parent().is(':even');
Run Code Online (Sandbox Code Playgroud)

这将返回truefalse,具体取决于元素的位置.

但是这总是会返回false:

   function whereAreWe(myself,range){
        var parent = myself.parent();
        var position = parent.is(':even');
        alert(position);
        //outputs false
   }

   $('.hasSVG').on('click', function(){
        whereAreWe($(this),2);
   });
Run Code Online (Sandbox Code Playgroud)

我在这里有一个工作示例:JSFiddle

在示例中,您将看到我正在尝试查看所述元素的父(.line)是奇数还是偶数.

cIp*_*h3r 2

这是因为 :even 选择器仅在列表中有用,但 Parent 只引用一个对象。因此,:即使列表为 1 也是没有意义的。

但是,您有指示行号的 ID

var position = parent.attr("id").substr(4) % 2 == 0;
console.log(position);
Run Code Online (Sandbox Code Playgroud)

提取 id 并从“lineX”中删除“line”字符串,即可得到行号 X。使用 MOD 2 检查(或者与 1 进行按位与:)

var position = ((parent.attr("id").substr(4) & 1) == 1);
Run Code Online (Sandbox Code Playgroud)

会成功的。