是否可以使用Jquery来检测下一个id或锚并使用它来创建一个围绕另一个元素的新div?

时间:2012-08-02 00:18:27

标签: jquery

我所拥有的HTML类似于以下内容:

<div id="container">
  <ul>
    <li>
        <div class="oneClass">
            <img src="http:image.jpg">
        </div>
        <div class="anotherClass" id="oneID">
            <div class="twoClass" id="randomID">
                <cite class="user">
                    <a href="http://someURL" >Name</a>
                </cite>
                <span class="icon user"></span>
                <span class="threeClass">
                    <a href="http:URL#oneID">some text</a>
                </span>
            </div>
            <p class="content" id="randomID">some words content</p>
        </div>
    </li>
    <li>
        <div class="oneClass">
            <img src="http:image.jpg">
        </div>
        <div class="anotherClass" id="anotherID">
            <div class="twoClass" id="randomID">
                <cite class="user">
                    <a href="http://someURL" >Name</a>
                </cite>
                <span class="icon user"></span>
                <span class="threeClass">
                    <a href="http:URL#anotherID">some text</a>
                </span>
            </div>
            <p class="content" id="randomID">some words content</p>
        </div>
    </li>
  </ul>
</div>  

我需要的是找到一种方法来检测oneClass之后的下一个ID并用于在oneClass周围创建另一个div。 例如:

    <div id="container">
       <ul>
        <li> 
      <div id="myName_oneID">
            <div class="oneClass">
         <img src="http:image.jpg">
            </div>
      </div>
         <div class="anotherClass" id="oneID">
            <div class="twoClass" id="randomID">
                <cite class="user">
               <a href="http://someURL" >Name</a>
                 </cite>
                    <span class="threeClass">
                         <a href="http:URL#oneID">some text</a>
                    </span>
              </div>
                <p class="content" id="randomID">
                   some words content
                </p>
        </div>
     </li>
      <li>
        <div id="myName_anotherID">
             <div class="oneClass">
                <img src="http:image.jpg">
             </div>
         </div>
             <div class="anotherClass" id="anotherID">
                 <div class="twoClass" id="randomID">
                     <cite class="user">
                    <a href="http://someURL" >Name</a>
                      </cite>
                     <span class="threeClass">
                    <a href="http:URL#anotherID">some text</a>
                     </span>
                 </div>
             <p class="content" id="randomID">
                   some words content
             </p>
          </div>
     </li>
    </ul>
</div> 

我试图从锚中得到它:

    $(".threeClass a").map(function () {
    var myID ="myName_" + this.hash.replace(/#/, '');
    //alert(myID);
$(".oneClass").each(function () {
    $(this).wrap("<div id='" + myID + "' />");
});

});

如果我测试警报(myID),它会正确检测到,但是当我尝试使用它来包装新的div时,它会为所有oneClass创建相同的Id。

可以吗?

我是javascript或Jquery的新手,并以正确的方式欣赏帮助或指导。

谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个

$('.oneClass').each(function(){
    id=$(this).next().attr('id');
    $(this).wrap('<div></div>').parent().attr('id', 'myName_'+id);
});

DEMO(见来源)。