javascript - 在使用 jQuery 追加到列表之前检查重复的 div

标签 javascript jquery

这应该是微不足道的,但我遇到了问题......

基本上我想做的是在用户点击“类(class)”时将一个新的“div”附加到“selected-courses”。当且仅当当前类(class)不在“所选类(class)”框中时,才会发生这种情况。

我遇到的问题是,执行此操作时,“selected-courses”部分没有附加任何内容。我已经使用警报语句来确保代码实际上正在运行。我对 .on 和 .each 工作方式的理解有问题吗?我可以这样使用它们吗?

这是一个 fiddle http://jsfiddle.net/jq9dth4j/

$(document).on("click", "div.course", function() {
    var title = $( this ).find("span").text();
    var match_found = 0;

    //if length 0 nothing in list, no need to check for a match     
    if ($(".selected-course").length > 0) {
        match_found = match(title);
    }
    if (matched == 0) {
        var out = '<div class="selected-course">' + '<a href="#">' + title + '</a>'+'</div>';
        $("#selected-box").append(out); 
    }       
});

//checks to see if clicked course is already in list before adding.
function match(str) {
    $(".selected-course").each(function() {
        var retval = 0;
        if(str == this.text()) {
            //course already in selected-course section
            retval = 1;
            return false;
        }
    });
    return retval;
}

最佳答案

您的 fiddle 中有几个小问题。

参见固定 fiddle :http://jsfiddle.net/jq9dth4j/1/

function match(str) {
    var retval = 0;
    $(".selected-course").each(function() {
        if(str == $(this).text()) {
            retval = 1;
            return false;
        }
    });
    return retval;
}

您没有将您的 this 包装在 jquery 对象中。所以它抛出一个异常说 this 没有方法 text()

其次,您的 retval 是在 each 内声明的,因此它无法在 each 之外返回,这是错误的范围。

最后是 block 中的 if:

if (matched== 0) {
    var out = '';
    out += '<div class="selected-course">' + '<a href="#">' + title + '</a>'+'</div>';
    $("#selected-box").append(out); 
}   

正在查看错误的变量,它正在查看 matched,它不存在导致异常。

关于javascript - 在使用 jQuery 追加到列表之前检查重复的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472292/

相关文章:

javascript - 如何正确地退出一个函数?

javascript - 如何向 polymer 自定义元素的子元素添加点击监听器?

javascript - LinkedIn 示例代码给出 SyntaxError

javascript - 模态未给出预期输出

javascript: $(window).height 不是函数

jquery - 这会对我网站的加载时间产生负面影响吗?

javascript - 如何使用javascript从couchdb获取数据

.net - 如何使用带有计时器控件的javascript使浏览器在页面加载时全屏显示

javascript - $(this) 正在提醒 jquery 中先前选择的值

jquery - 选择多个表中的 <td> 标签,同时排除特定表