【问题标题】:jQuery: how to find sibling from parentjQuery:如何从父母那里找到兄弟姐妹
【发布时间】:2014-08-31 18:05:36
【问题描述】:

如果我有某事。像这样

<div><input rel="first" type="radio" name="x" value="1"></div>
 …
<div><input type="radio" name="x" value="2" disabled></div>
 …
<div><input type="radio" name="x" value="3" disabled></div>
 …
<div><input type="radio" name="x" value="4"></div>

我想在 rel="first" 之后找到下一个启用的单选按钮。 由于我没有包装 div,所以有一种简单的方法可以找到

$('input[rel="first"]').nextAll('input:radio').not(':disabled'); 

但我无法得到它们,因为我必须用 div 包装输入。

$('input[rel="first"]').parent().nextAll('input:radio').not(':disabled');

也不工作。显然 parent() 正在 div 级别上搜索下一个元素。但是如何进入下面的 div 呢?这个我试过了

$('input[rel="first"]').parent().nextAll('div ~ input:radio').not(':disabled');

但它也不起作用

【问题讨论】:

标签: javascript jquery html parent next


【解决方案1】:

试试这个:

$('input[rel="first"]')
  .parent() //it's parent div
  .nextAll('div') //finds nextAll div
  .children('input:radio') //inside div find input with radio type
  .not(':disabled'); //ensures not disabled

【讨论】:

  • 虽然这种方法可能会达到所需的结果,但与使用纯 JavaScript 的 for loop 相比,它的速度非常慢。
【解决方案2】:

试试,

$('div:has(:radio[rel="first"])')
    .nextAll('div:has(:radio:not(:disabled))')
      .find(':radio')

DEMO

【讨论】:

  • @Downvoter 关心评论。?我想知道你是如何在几分之一秒内阅读这个复杂的选择器并否决我的答案..?
  • @too many editors in just one minute and you ask to "care to comment"? :) 无论如何这都不是办法。
  • @RokoC.Buljan 哦.. 我第一次错过了 .parent() .. 我同意这是一个错误,之后我只是编辑了帖子以使答案更好。 ..
  • @RokoC.Buljan 当然.. 当其他人仔细查看我的代码时,我会变得非常高兴.. :) :D
  • 知道吗? +1 来自我:D
【解决方案3】:

你可以试试下面的代码

$('input[rel="first"]').parent().nextAll('div').has('input:not(:disabled)').first()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多