javascript - 如何使用 jQuery 检查 ul 是否具有特定的 li?

标签 javascript jquery html

我正在处理两个 ul 列表。我需要的是如果有人点击 list1 中的列表项,它会检查第二个列表是否包含被点击的元素。如果它不包含该元素,则复制它,否则直接返回。

到目前为止,我所做的是在列表之间成功移动元素,但如果我对其进行检查,一切都会停止。

这里是jsfiddle的链接.

$().ready(function() {
  var classHighlight = 'highlight';
  var $thumbs = $('ul li').on("click", function(e) {
    //e.preventDefault();
    debugger;
    $thumbs.removeClass(classHighlight);
    $(this).addClass(classHighlight);
  });
  $('#select1').on("dblclick", "li", function() {
    //if($("#select2").has($(this))
        //return;
    //else
        $(this).clone().appendTo('#select2').removeClass('highlight');
  });
  $('#select2').on("dblclick", "li", function() {
    $(this).remove();
  });
  $('#add').click(function() {
    $('#select1.highlight').clone().appendTo('#select2').removeClass(classHighlight);
  });
  $('#remove').click(function() {
    $('#select2.highlight').remove();
  });
});

如果您取消注释代码中的上述行,一切都会停止。 任何人都可以帮我解决这个问题吗?

谢谢

最佳答案

试试这个检查:

var check = function(li) {
    return $("#select2 li").filter(function(i, li2) {
        return $(li2).text() == $(li).text();
    }).length > 0;
};

Demo

当您使用 clone() 时,您无法使用 is() 比较新的克隆元素或 has()与原始元素一样,因为它是一个新元素,所以不一样,如 clone 的文档中所述:

Create a deep copy of the set of matched elements

所以这是一个副本。

关于javascript - 如何使用 jQuery 检查 ul 是否具有特定的 li?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37070807/

相关文章:

javascript - React Native 设置 TextInput 值大写

javascript - 如何通过标题向上/向下滑动来降低所有元素?

javascript - 在 Bootstrap 中垂直对齐 DIV

javascript - jQuery:突出显示 div 框 onload

javascript - 按系列名称设置图文初始列可见性

javascript - 无法使用 javascript 在页面上使用多个表单来定位 input[type=file]

php - jQuery "load()"无法加载 PHP "curl_exec()"结果

jquery - 使用 jQuery 清除启用多选的 <select> 上的所有选择的快速方法?

html - 使类(class)图标(电话)可点击

javascript - WebRTC STUN 服务器如何反馈 SDP 和 ICE 候选人?