在订单项中查找文字,将相应的ID添加到该订单项

时间:2018-05-29 01:25:52

标签: jquery replace each

我正在尝试编写JQuery以获取特定ID中的列表项(LI)的内容,并且对于每个LI,添加等于LI内的文本的ID。

因此换句话说,使用自己的文本内容作为ID,使每个LI在CSS中可寻址。我猜你不是最好的JQuery,所以不确定接下来的步骤。我用HTML / JQuery得到了以下内容。

理想情况下,它会忽略第一个LI,用连字符替换空格和任何特殊字符。

HTML:

<div class="container">
    <div class="content1">Content1</div>    
    <div class="content2">Content2</div>
</div>

JS:

<div id="services">
   <div class="box">
        <ul>
            <li><button type="button">CLOSE</button></li>
            <li>Irrigation</li>
            <li>Transport</li>
            <li>Construction</li>
            <li>Import & distribution</li>
            <li>Iwi</li>
            <li>Tourism</li>
            <li>Logistics</li>
            <li>Education</li>
         </ul>
   </div>
</div>

2 个答案:

答案 0 :(得分:1)

可以排除任何有按钮或使用not()的第一个孩子,并在获得倍数时删除额外的-

类似的东西:

$("#services .box li").not(':has(button),:first-child').each(function() {
  var one_id = $(this).text().replace(/[^a-zA-Z0-9]/g, '-').replace(/-+/g, '-');
  $(this).attr('id', one_id).append(' => ID: ' + one_id);// remove append in production
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="services">
  <div class="box">
    <ul>
      <li><button type="button">CLOSE</button></li>
      <li>Irrigation</li>
      <li>Transport</li>
      <li>Construction</li>
      <li>Import & distribution</li>
      <li>Iwi</li>
      <li>Tourism</li>
      <li>Logistics</li>
      <li>Education</li>
    </ul>
  </div>
</div>

答案 1 :(得分:0)

此代码已经在执行您想要执行的操作。 eq selector您需要选择第一个或其他ul元素。

&#13;
&#13;
jQuery(document).ready(function($) {
   $( "div.box > ul:eq(0) > li:not(:first)" ).each(function( index ) { 
      $(this).attr('id', $(this).text().replace(/[^a-zA-Z0-9]/g,'-'));
   });
})
&#13;
&#13;
&#13;