对从数组中获取索引感到困惑

时间:2016-08-10 17:23:51

标签: javascript jquery arrays

我有一个包含一些文字的数组:

var values = ['text1', text2',...]

此数组使用文本填充选择,当用户选择选项时,使用值创建ul列表,使用用户选择的所有选项创建另一个数组。我想要的是让用户从列表和数组中删除该元素,问题是当我尝试获取所选择的li的索引时

//Here it appends the element selected to the list
$('#container ul#header').append('<li class="list-group-item">'  +  text + '<span class="glyphicon glyphicon-remove pull-right" aria-hidden="true"></span> </li>');


 function deleteElement(){
    $(".list-group-item span").click(function(){
       var index = values.indexOf( $(this).parent().text() )
   });
 }

但它总是返回-1,但是当我对要删除的元素文本进行硬编码时,它确实找到了它

values.indexOf( $(this).parent().text() ) //Doesnt work
values.indexOf( 'text1' ) //This works

编辑:

$(this).parent()。text()返回li

中的文本

在控制台上显示它显示的内容,但是当我控制字符串的长度时,它会返回大小加一:

//String
values.indexOf( $(this).parent().text().length ); //7
values.indexOf( 'string'.length ); //6

所以我想这与此有关,我试图弄清楚为什么它会返回加一,我猜它与我有关,我不确定。

1 个答案:

答案 0 :(得分:4)

由于trim()之后的空格,您需要text() </span>

var index = values.indexOf($(this).parent().text().trim());

Working example