Jquery获取下一个特定标记

时间:2014-08-20 01:33:07

标签: javascript jquery html

我有一个像这样的HTML代码:

<div id="sd">
<p article="start" a_type="advertisement" cid="dsfd"></p>
<p article="start" a_type="nope" cid="vvb"></p>
<page_number>106</page_number>
</div>

所以,如果使用$("#sd").each,当我在第一个p标签(<p article="start" a_type="advertisement" cid="dsfd"></p>)时,我无法使用$(this).next("page_number").html(); 它始终显示为未定义。

$("#sd").each(function(){

 sd = $(this).next("page_number").html();
 alert(sd);

});

但结果显示:

undefined //fist alert
 106 //second alert

我想要的结果如下:

 106 //fist alert
 106 //second alert

第二个问题是:

我有一个像这样的HTML代码:

<div id="sd">
    <dc_title article="start" cid="#P1_001"></dc_title>
    <p article_con="1.1" cid="#P1_013"></p>
    <p article="start" cid="#P2_001"></p>
    <p article_con="2.1" cid="#P2_004"></p>
    <p article_con="2.1" cid="#P3_001"></p>
    <p article_con="2.1" cid="#P3_005"></p>
    <p article_con="2.1" cid="#P4_001"></p>
    <p article="end" cid="#P4_002"></p>
    <img article_con="1.1" cid="#P5_040">
    <pam_credit article="end" cid="#P5_043"></pam_credit>
    <dc_title article="start" cid="#P14_001"></dc_title>
    <p article_con="14.1" cid="#P14_040"></p>
    <p article_con="14.1" cid="#P16_005"></p>
    <p article="end" cid="#P16_018"></p>
    <prism_object article="start" cid="#P20_001"></prism_object>
    <p article_con="20.1" cid="#P20_009"></p>
    <p article_con="20.1" cid="#P21_001"></p>
    <p article="end" cid="#P21_004"></p>
    <dc_title article="start" cid="#P22_001"></dc_title>
    <pam_caption article_con="22.1" cid="#P22_017"></pam_caption>
    <p article_con="22.1" cid="#P23_001"></p>
    <dc_creator article="end" cid="#P23_007"></dc_creator>
    <dc_title article="start" cid="#P23_018"></dc_title>
    <p article_con="23.1" cid="#P23_027"></p>
    <pq_subtitle article_con="23.1" cid="#P25_016"></pq_subtitle>
    <p article="end" cid="#P25_023"></p>
</div>

所以我想找到不止一个这样的模式:

<p article="start" cid="#P1_001"></dc_title>
<p article_con="1.1" cid="#P1_013"></p>

不介意标记名称,但article="start" article_con=和article_con必须相同。例如

在某些地方有这样的标签:

<p article="start" cid="#P1_001"></dc_title>
<p article_con="1.1" cid="#P1_013"></p>

和花药放置相同的标签:

<p article="start" cid="#P1_001"></dc_title>
<p article_con="1.1" cid="#P1_013"></p>

但是没关系

<p article="start" cid="#P1_001"></dc_title>
<p article_con="1.1" cid="#P1_013"></p>

和花药放置相同的标签:

<p article="start" cid="#P1_001"></dc_title>
<p article_con="2.1" cid="#P1_013"></p>

2 个答案:

答案 0 :(得分:0)

在你的第一个代码中,'page_number'元素是'sd'div的子元素,你应该使用:

$("#sd").children().each(function(){ ...

答案 1 :(得分:0)

如果要获取某个标记名称(或任何其他选择符)的下一个元素,请使用:

$(this).nextAll('tagname').get(0)

this作为对您正在使用的元素的引用,它可能是一个选择器。

http://jsfiddle.net/hwf6pyyu/