0

複数のスパン タグがあり、具体的な ID を持つスパン タグが存在するかどうかを確認する必要があります。

ただし、以下の例では false が返されます。何が間違っている可能性がありますか?このリンクで利用可能な例があります

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) );
})
4

3 に答える 3

3

次のように、関数を言い換えてみませんか

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

階層/依存関係が重要ではなく、id を持つ要素が の#r*下にしか存在できない場合#recipient_listは、

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

そして..さらに、idを持つ要素が-要素#r*のみの場合は、次のspanこともできます

function check_in_recipient_list (id) {
    return $("#r" + id).length > 0;
}
于 2013-05-24T08:44:06.157 に答える
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
}
于 2013-05-24T08:43:54.057 に答える
0

試す

$("#recipient_list > span[id='"+id+"']").lenght>0
于 2013-05-24T08:47:09.767 に答える