【问题标题】:Is this an even or odd element?这是偶数还是奇数?
【发布时间】:2016-09-15 17:17:06
【问题描述】:

所以我刚才在 SO 上 saw this question,这让我开始思考。

基本上,OP 有一些类似的东西

<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
$('div').each( function() {
   //do something different based on whether even or odd div
   if ($(this) == ':even') {}  //invalid markup I know!
   else {}
});

有没有办法在 .each() 内部判断您当前的元素是奇数还是偶数实例?

有 jQuery 的 .filter 方法,但是当它只有一个元素时它总是返回 true。

我也意识到您可以使用 nth-child 选择器或以其他方式设置它,但我对这个特定情况感到好奇。

【问题讨论】:

标签: jquery jquery-selectors


【解决方案1】:

.each 的回调被传递元素的索引和元素:

$('div').each(function(i, el) {
   // As a side note, this === el.
   if (i % 2 === 0) { /* we are even */ }
   else { /* we are odd */ }
});

【讨论】:

【解决方案2】:
$('div').each( function(index) {
   //do something different based on whether even or odd div
   if (index % 2 == 0) {}  // even
   else {} // odd
});

【讨论】:

  • 其实你们俩时间一样 :)
【解决方案3】:

如果你知道所有元素都是同一个父元素的子元素,你可以使用每个元素提供的索引

$('div').each( function(index) {
    if (index%2 == 0) {}
    else {}
});

否则,使用index 函数计算元素在其兄弟元素中的索引。

$('div').each( function() {
    if ($(this).index()%2 == 0) {}
    else {}
});

【讨论】:

  • +1 - 感谢您向我展示 .index() 方法。给我一个新的!
【解决方案4】:

使用 Jquery api .is( selector )

$('div').each( function() {
    //Check if element is even
    if ($(this).is(":even")) {
    }

    //Check if element is odd
    if ($(this).is(":odd")) {
    }

});

【讨论】:

  • 这似乎不起作用。另一位用户提供了相同的解决方案,并已删除了答案。从逻辑上讲,它看起来确实很有希望,但并没有成功。 jsfiddle.net/mrtsherman/EjduK/1
  • @mrtsherman:谢谢,是的,我再次检查并发现它不适用于 jquery 版本
猜你喜欢
  • 2015-07-22
  • 2015-03-03
  • 2011-11-12
  • 2015-05-31
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
相关资源
最近更新 更多