jQuery:忽略a中的类<;李>;要素

jQuery:忽略a中的类<;李>;要素,jquery,Jquery,我有以下html列表: <ul> <li class="list-group-item ReplyPill">This is my first value<span class="badge badge-pill"><div id="close">X</div></span></li> <li class="list-group-item

我有以下html列表:

<ul>
<li class="list-group-item ReplyPill">This is my first value<span class="badge badge-pill"><div id="close">X</div></span></li>
<li class="list-group-item ReplyPill">This is my second value<span class="badge badge-pill"><div id="close">X</div></span></li>
(...)
</ul>
问题是'div'中的“X”也被读取,我的输出如下:“这是我的第一个值X”

我已经尝试了“.not”(“#close”)”来排除div,但它没有改变任何东西


那么有没有一种方法可以忽略循环中id为“close”的“div”?

id必须是唯一的-您需要一个类

此外,DIV不是span的有效子级

反正

let replyOptions=$('.ReplyPill').map(函数(){
返回$(this).contents().get(0).nodeValue;
}).get();
console.log(replyOptions);
//PS如何委派对X的单击
$(“#列表”)。在(“单击”,“关闭”,函数()上){
$(this).最近的(“li”).hide();
})
li{
宽度:200px;
背景颜色:黄色;
}
.徽章{
显示:内联块;
浮动:对;
}

    这是我的第一个值x 这是我的第二个值x
选择器中的排除有点棘手,尤其是在处理文本节点时。一种更简单的方法是将要检索的文本包装在它自己的元素中并直接指向它

还要注意,将
div
元素放在
span
中是无效的HTML。此外,您可以使用
map()
更有效地构建阵列。试试这个:

let replyOptions=$('.ReplyPill span.value').map((i,el)=>el.textContent.get();
console.log(replyOptions)

  • 这是我的第一个价值观 X
  • 这是我的第二个价值观 X

使用class而不是id,比如说notclass,.not('.close')不起作用。请使用.html()并将其存储到变量html中。然后使用html.substring(0,html.indexof('非常有效,谢谢:)
let replyOptions = [];
        $('.ReplyPill').each(function () {
            replyOptions.push($(this).text());
        });