我正在处理两个 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;
};
当您使用 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/