检查DOM中是否存在元素

时间:2010-08-23 03:02:10

标签: javascript jquery

以下代码段对我不起作用。基本上我想检查是否有一个名为“documents []”的输入元素和值item.id并返回void。

我认为这一行会做到:$("input [name='documents[]'][value='"+item.id+"'") != false

但是每次声明都返回true。我查看了jQuery构造函数的文档,如果没有为选择器找到元素,它没有提到返回false的任何内容。

如何判断选择器是否与任何元素不匹配?

    $.ajax({
        url:'/myid/documents/json_get_documents/'+request.term,
        dataType:"json",
        success: function(data) {
            response($.map(data, function(item){
                if($("input [name='documents[]'][value='"+item.id+"'") != false) {
                    return; //This item has already been added, don't show in autocompete
                }
                return {
                    label: '<span class="file">'+item.title+'</span>',
                    id: item.id,
                    value: 'Search by title'
                }
            }))
        }
    });

2 个答案:

答案 0 :(得分:3)

$("input [name='documents[]'][value='"+item.id+"'"]).length

如果该元素在DOM中可用,则此属性的长度值大于零。你看,当你使用jquery的选择器选择一个元素时,它会用该元素创建一个特殊的数组(或者你可以说是一个jquery对象)。如果可以使用该选择器选择多个元素,则该数组将包含所有这些元素,如果没有元素与该选择器匹配,则该数组将没有任何内容,在这种情况下,它的length属性将为零。

希望有所帮助。

答案 1 :(得分:2)

您可以使用.length$('lol').length会在0返回1时返回$('body').length