我正在尝试编写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>
答案 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元素。
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;