【问题标题】:jquery selecting the next div when that div has children当该div有孩子时,jquery选择下一个div
【发布时间】:2010-03-23 05:50:26
【问题描述】:

我希望能够像兄弟姐妹一样选择下一个 div(它不是子 div 或父 div)。然后我想从那个 div 中获取 node_id 并解析它。例如,下面我知道第一个的“NODE_ID”,所以我可以使用 jquery 选择器来获取那个 node_ID,然后我想直接移动到那个 DIV 的下方并检索那个的 NODE_ID,但我不知道ID 或 Node_id,所以我必须能够在没有选择器 id 的情况下到达下一个 DIV……在这种情况下,我想检索 node_id 值“74_3”并解析它。

这是 HTML:

<div style="display: block;" id="71_2_sub_p_div" node_id="72_2">
    <span class="a_hand">
        <img src="../images/maximize.png"> &nbsp;Commercial
    </span>
</div>

<div style="display: block;" id="71_3_sub_p_div" node_id="74_3">
    <span onclick="toggle_display('75_4_sub_p_div');" class="a_hand">
           <img src="../images/maximize.png"> &nbsp;Apartments
    </span>
</div>

这是我用来获取已知 NODE_ID 的选择器:

$("div[node_id='72_2']")

我如何在 jquery 中做到这一点?提前致谢。

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    如果div是下一个兄弟,可以使用.next()

    $('div[node_id=72_2]').next(); // should be div#71_3_sub_p_div
    $('div[node_id=72_2]').next().attr('node_id'); // should be '74_3'
    

    如果还有其他兄弟姐妹,而您只想找到&lt;div node_id='...'&gt; 的,则可以稍微复杂一点:

    $('div[node_id=72_2]').nextAll('div[node_id]').eq(0).attr('node_id') 
    // also '74_3'
    

    查看所有下一个兄弟,寻找具有 node_id 属性的 div,使用 .eq() 将匹配减少到单个项目,然后返回它的 node_id 属性。

    【讨论】:

    • 不要使用.slice(0,1),最好使用.first()api.jquery.com/first
    • .first() 只调用了this.eq(0) 所以,我只使用了eq(0),有趣的是它只调用了this.slice(0,1) 所以,都是一样的,而.slice() 需要的函数调用比@ 少2 987654336@
    • 太棒了。这做到了。感谢您的帮助!
    • first 返回第一个元素的 jQuery 对象; get(0) 返回 DOM 元素本身。
    • @matt - 是的,我知道这一点。 .eq(0).slice(0,1) 也返回一个 jQuery 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2021-10-03
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多