jquery
  • css-selectors
  • 2009-09-14 4 views 11 likes 
    11

    일부 서버 측 유효성 검사에서 돌아 오는 요소 식별자 배열이 있습니다. ID 앞에는 '#'이 붙지 않습니다. 배열을 살펴보고 각 멤버에 # 접두사를 붙이는 대신 모든 요소를 ​​ID로 직접 선택하는 jquery 방법이 있습니까? 당신이 그 (것)들에게 ID_1 같은 이름을 지정하고 당신은 당신이 할 수있는 문자열로 ID가있는 경우이ID 배열 - JavaScript/JQuery로 선택하는 방법?

    $("[id^='id_]") // returns multiple 
    
    +0

    당신은 jQuery 응답을 원했고 JS를 선택했습니다. ( –

    +0

    @Elzo, 불행히도 만족스러운 jq 솔루션이 없었습니다. –

    +1

    @Elzo, 나는 그의 솔루션이 JS와 jQuery의 훌륭한 조합이라고 말하고 싶습니다. 자바 스크립트가 할 때만 jQuery에 붙어있다. (과거를 파헤 치고있다. :) – davidethell

    답변

    12

    "구식"getElementById를 잊지 마십시오. id를 해시 할 필요가 없습니다.

    var ids = ['jq-primarySearch', 'jq-n-CSS']; 
    var nodes = $.map(ids, function(i) { return document.getElementById(i) }); 
    var jqObj = $(nodes); 
    
    +1

    JavaScript는 정말로 절름발이 다. '$ .map (ids, document.getElementById)'실제로 작동하지 않습니다! –

    3

    이런 식으로 jQuery에서 선택하십시오.

    $("#"+id); //gives you one element 
    

    비슷한 ID를 여러 개 갖고 계시다면, Elzo의 sugges .

    0

    을 할 수 ID_2 경우이

    $("[id=id_value]"); // returns 1 id 
    

    같은 ID로 선택할 수 있습니다 jQuery를에

    21

    당신은 다음과 같이, 그들과 합류 할 수 :

    var ids = ['div1', 'div2', 'div3']; 
    
    $('#' + ids.join(',#')).click(function() { alert('hi'); }); 
    
    +3

    이제 우리가 얘기하고있다! – Andreas

    +1

    이제 우리는 가스로 요리하고있다! –

    4

    (NB - 나는이 시도하지 않은 -이 내 머리 위로 떨어져있다)

    의 당신의 배열 편곡 "라고하자 ".

    문자열 식별자 배열을 jQuery 객체의 배열로 매핑 한 다음 일반적인 jQuery 선택기를 사용하여 배열을 모두 concatenate 할 수 없습니까?

    $($.map(arr, function(id) { return $('#' + id); })) 
    
    1

    그냥 노드 선택을 할 결과 자신이 다음 둘러싸 기 :

    $(document.getElementById(id)) 
    

    문자열 선택을 구성 저장 jQuery를 만 다시 구문 분석 할 수있을 것이라는 점을 그리고 단지의 jQuery 개체를 가져 jQuery를에 노드를 공급 그 다음 똑같은 일을하십시오. 또한 ':'및 '.'와 같은 이스케이프 문자는 ID에서 유효하지만 선택기에서는 다른 문자를 의미하는 것에 대해 걱정할 필요가 없습니다.

    관련 문제