我有一个包含一些文字的数组:
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
所以我想这与此有关,我试图弄清楚为什么它会返回加一,我猜它与我有关,我不确定。
答案 0 :(得分:4)
由于trim()
之后的空格,您需要text()
</span>
:
var index = values.indexOf($(this).parent().text().trim());