jQuery .remove()在有效选择元素后无效

时间:2017-10-18 18:53:48

标签: javascript jquery

JSFiddle:https://jsfiddle.net/coh1xr77/5/

我需要根据其确切内容删除使用选择器正确选择的<LI> DOM元素。我的列表包含一组时间LI,当我点击按钮时,我的选择是根据确切的文本匹配删除列表中的第一个12:15am

我可以看到我的选择是正确的,因为我在警告框中得到[对象]引用,而不是&#34;未定义&#34;。

但是,此元素上的后续remove()不执行任何操作:元素仍然存在。

var myselection = '12:15am';

$('#remove').click(function() {

    var current = $('.ui-timepicker-list li').filter(function() { 
            return $(this).text() ===  myselection;
        });

    alert('current = ' + current);  // This works, element found

    $(current).remove();   // This does nothing (or doesn't remove properly)

});

1 个答案:

答案 0 :(得分:1)

您需要更改条件以检查li innerText是否以所选时间字符串开头。喜欢:$(this).text().indexOf(myselection) == 0

这里有更新的小提琴:https://jsfiddle.net/coh1xr77/11/

更新

考虑到所有时间值在末尾都有括号内的相对时间字符串,您可以尝试基于该括号(进行拆分,并与该字符串的第一部分进行比较。喜欢:$(this).text().split('(')[0].trim() == myselection

这里有小提琴:https://jsfiddle.net/coh1xr77/12/

更新2

如果您完全确定li元素的结构不会更改,则可以使用childNodes访问该文本。喜欢:$(this)[0].childNodes[0].textContent == myselection;

这里有更新的小提琴:https://jsfiddle.net/coh1xr77/14/