使用jquery检查现有ID

时间:2013-05-24 08:42:00

标签: jquery html

我有几个span标记,如果存在,我需要检查具有具体id的span标记。

以下示例返回false。可能有什么不对? I have an example available at this link

HTML:

<div id="recipient_list">
    <span id="r1"></span>
    <span id="r4"></span>
    <span id="r5"></span>
</div>

的javascript:

function check_in_recipient_list (id) {
    $("#recipient_list > span").each( function () {
        existed_id = $(this).attr("id");

        if (existed_id === "r"+id+"") {
            return true;
        }
    });
    return false;
} 

$(document).on("dblclick", function () {
    alert( check_in_recipient_list(1) );
})

3 个答案:

答案 0 :(得分:3)

为什么不重述你的功能,比如

function check_in_recipient_list (id) {
    return $("#recipient_list > span#r" + id).length > 0;
}

如果层次结构/依赖关系无关紧要,且标识为#r*的元素只能位于#recipient_list下,您也可以选择

function check_in_recipient_list (id) {
    return $("span#r" + id).length > 0;
}

和..此外,如果标识为#r*的元素仅为span - 元素,您也可以

function check_in_recipient_list (id) {
    return $("#r" + id).length > 0;
}

答案 1 :(得分:1)

您的回复退出了您提供给each的回调,而不是来自check_in_recipient_list功能。

这样做:

function check_in_recipient_list (id) {
    var found = false;
    $("#recipient_list > span").each( function () {
        var existed_id = this.id; // faster and simpler than using attr, and don't forget var
        if (existed_id === "r"+id+"") {
            found = true;
            return false; // this breaks the iteration
        }
    });
    return found;
} 

请注意,整体可以更简单:

function check_in_recipient_list (id) {
    return $("#recipient_list > span#r"+id).length>0
}

答案 2 :(得分:0)

尝试

$("#recipient_list > span[id='"+id+"']").lenght>0