2013-05-24 3 views
0

나는 여러 개의 span 태그가 있으며 구체적인 ID가있는 span 태그가 있는지 확인해야합니다.jquery를 사용하여 기존 ID 확인

아래의 예는 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> 

자바 스크립트 :

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

왜 당신이 당신의 기능을 재 작성하지 않는,

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

같은 경우 계층 구조/종속성은 중요하지 않으며 id가 #r* 인 요소는 #recipient_list 이하일 수 있습니다. 아이디 #r*을 가진 요소는 span -elements가있는 경우, 당신은 또한 당신은 또한 시도

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

cond one은 "수신자 목록에서 체크인"하지 않습니다. –

+0

글쎄 ... 잘 잡아라.하지만 우리는 전체 DOM을 모른다.'# r *'가'#receiver_list'의 자식이라면 중요하다. –

1

반품이되지 check_in_recipient_list 함수에서, 당신은 each에게주는 콜백에서 종료된다.

이 작업을 수행 :

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 
} 
+0

당신이 할 수 또한'function (index, element)'인'each'에 전체 술어를 사용하십시오. 그러나'$ (element)'를해야 jquery-fct에 접근하거나'element.id ':) –

0

을 수행 할 수 있습니다, 또한 ..

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

하고 갈 수

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