javascript - JQuery 包含不工作的多个 li

标签 javascript jquery html

我正在尝试使用 $contains 检测某个元素是否已经附加到 DOM 中

var isAlreadyAppend = 函数(键){

    return ($.contains($('#allBellMessageId'), $("#" + key)));
};

var test= function(){
   if(!isRepeated('a')){
       //Append into DOM
   };
       if(!isRepeated('b')){
       //Append into DOM
   };
       if(!isRepeated('c')){
       //Append into DOM
   };
    if(!isRepeated('a')){
       //Append into DOM
   };
}

添加键 a,b,c,a 仍然返回 false, false, false, false。

生成的html代码就是这个

  <li id="bellMessagesId" class="dropdown notifications">
 <a class="dropdown-toggle" data-toggle="dropdown" href="#">
  <ul id="allBellMessageId" class="dropdown-menu bellMessage-dropdown-menu">
   <div class="col-xs-12">
  <li id="a" class="col-xs-12">
  <li id="b" class="col-xs-12">
  <li id="c" class="col-xs-12">
  <li id="a" class="col-xs-12">
  </ul>
  </li>
  <li>

渲染结果是 4 条消息,a,b,c,a。

我做错了什么?

问候。

最佳答案

isRepeated()不返回任何内容,它只是执行。因为它不返回任何内容,所以它会返回 undefined,因此当您检查它时,它会显示 undefined 并评估为 false。所以试试这个:

var isRepeated(key) = function(key){
  return $.contains($('#fooElements'), $("#" + key))
};

除此之外,我对 $.contains 不太熟悉,因此您可以尝试以下操作:

var isRepeated(key) = function(key){
  return $('#fooElements').find("#" + key).length ? true : false;
};

我一直用它来检查某些东西是否存在,它就像一个魅力。

关于javascript - JQuery 包含不工作的多个 li,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942541/

相关文章:

javascript - 如何使用 jquery ajax 解析二级 JSON 数组

javascript - 在文本上 float 透明 PNG

angularjs - Accordion 的表布局调整

javascript - 使用 jquery 5 秒后关闭对话框

javascript - 我可以从 highcharts.js 中抓取原始数据吗?

javascript - 使用 JavaScript 数学。作为 HTML Canvas .fillRect 坐标的方法

javascript - 如何使用 Nextjs 设置 Firebase 托管多站点

javascript - 在等待数据时在 Javascript 中使用 gif 图像

javascript - 填充 amCharts 线条路径并删除 yAxes 值

javascript - 平滑背景图像 css 过渡与动态加载的图像