查找列表项并将其ID转换为小写,添加连字符

时间:2015-07-31 10:36:07

标签: javascript jquery find

我在同一页面上有多个无序列表(确切地说是一个手风琴)。每个列表项都有一个唯一的id,基本上是用户生成的字符(因此可以是任何东西)。我正在尝试将每个唯一ID转换为小写,并将任何空格替换为连字符。

我正在玩的代码位于.each函数内,因为在同一页面上有多个手风琴,它仍然输出用户生成的ID而不是转换后的ID:

$('ul.responsive-accordion').each(function() {

   var question = $('ul.responsive-accordion').find('li');
   var questionhash = $(question).attr('id');

   convertedhash = questionhash.toLowerCase().replace(/ /g, '-');

});

当我使用下面的输出到控制台时,它只输出第一个项目ID两次而不是其他项目(在这个例子中应该显示另外3个列表项目ID):

// Replace spaces with hyphens
var question = $('ul.responsive-accordion').find('li');
var questionhash = $(question).attr('id');

console.log ( questionhash );

convertedhash = questionhash.toLowerCase().replace(/ /g, '-');

console.log ( convertedhash );

见输出:

enter image description here

3 个答案:

答案 0 :(得分:2)

您需要使用each()

将所有内容循环播放
$('ul.responsive-accordion li').each( function() {
    var id = $(this).attr('id');
    console.log( id );
    var newId = id.toLowerCase().replace(/ /g, '-');
    console.log( newId );
    $(this).attr('id', newId);
});

答案 1 :(得分:1)

您没有正确使用每项功能

$('ul.responsive-accordion').each(function() {
   // use this to get access to the item in the loop
   var question = $(this).find('li');
   var questionhash = $(question).attr('id');

   convertedhash = questionhash.toLowerCase().replace(/ /g, '-');

});

或者,您也可以这样做:

$('ul.responsive-accordion').each(function(idx, elem) {

   var question = $(elem).find('li');
   var questionhash = $(question).attr('id');

   convertedhash = questionhash.toLowerCase().replace(/ /g, '-');

});

答案 2 :(得分:-2)

您想要在循环外初始化变量。

 var question = $('ul.responsive-accordion').find('li');

$(question).each(function() {

   var questionhash = $(question).attr('id');

   convertedhash = questionhash.toLowerCase().replace(/ /g, '-');

});