2011-05-09 5 views
0

문서 준비가 완료되면 클래스의 모든 div에 대한 개체를 만들고 div의 특성 'id'를 기반으로 개체를 할당하려고합니다. 다음은 작동하지 않는 코드입니다. 알아낼 수 없습니다.Jquery - 클래스의 모든 div를 기반으로 객체를 만드는 방법은 무엇입니까?

<div class="supercolor" >      
    <div class="colordiv" id="#111111" style="background-color:#111111;">&nbsp;</div> 
    <div class="colordiv" id="#222222" style="background-color:#222222;" >&nbsp;</div>     
    <div class="colordiv" id="#333333" style="background-color:#333333;">&nbsp;</div> 
</div> 

내 스크립트 섹션에 있습니다.

$(document).ready(function() { 

    $('div.supercolor > div').each(function() { 
     var color_object = { $(this).attr('id') : false } 
    }); 
}); 

+1

코드에 아무런 문제가 없지만 'color_object'로는 아무 것도하지 않습니다. 무엇을 성취하려고합니까? 자세한 내용은 우리가 당신을 도울 수 있습니다. –

+0

div ID가 유효하지 않음을 지적해야합니다. ID는 # 문자를 포함 할 수 없으며 문자로 시작해야합니다. – GordonM

+0

@ Rob Cowie : div를 기반으로 간단한 색상 선택기를 만들려고합니다. 사용자가 div를 클릭하면 각 div에 개체를 설정하여 추적해야합니다. 클릭하면 div 개체가 true로 설정됩니다. 내가 게시 한이 질문을 참조 할 수 있습니다. 이것은 디자인의 제 2 부분입니다. [link] (http://stackoverflow.com/questions/5932850/jquery-help-to-create-the-simplest-color-picker-ever) – maomaopop

답변

2
$(function() { 

    var divObjects = $("div.supercolor > div").map(function(val) { 
     return new DivObject(this.id); 
    }).get(); 

}); 

function DivObject(id) { 
    this.id = id; 
    ... 
} 

이 모든 <div> '의의를 가지고 객체를 div에에 매핑합니다 감사합니다. ID와 같은 개인 <div>의 데이터를 전달하여 생성자에 전달할 수 있습니다.

어레이를 나가려면 .get()으로 전화해야합니다.

[편집]

var testDiv = $.grep(divObjects, function(val) { 
    val.id === "test" 
})[0]; 

이 코드가 더 익숙한 보일 수 있지만

var testDiv; 
for (var i = 0, ii = divObjects.length; i < ii; i++) { 
    var div = divObjects[i]; 
    if (div.id === "test") { 
     testDiv = div; 
     break; 
    } 
} 
+0

이 질문은 유감이지만 Jquery에 새로 온 것입니다. id # test를 사용하여 객체의 값을 얻으려면 어떻게해야합니까? 나는 divObjects.get ('test')를 시도했다. val()하지만 작동하지 않는 것 같다. – maomaopop

+0

@mmk div objects는 배열입니다. 당신은 id 테스트를 가진 배열을 찾을 때까지 배열을 반복 할 수있다. 그렇지 않으면 당신은 그것을'$ .grep' 할 수있다. – Raynos

1

, 내가 것 당신이 'DivObjects'의 배열을 저장하기위한 좋은 이유가없는 한 접근 방식을 변경하는 것을 고려하십시오.

페이지로드시 각 색상 div에 클릭 핸들러를 연결하여 div에서 '선택한'클래스를 토글합니다 (다른 사용자와 함께 제거).

$("div.supercolor > div.selected").attr('id'); 

것은이 적합하지 않을 수 있습니다 : 당신은 (있는 경우) '선택'클래스와 색상을 선택 된 div 선택된 색을 얻고, 그것을 끌어해야하는 시점에서

$("div.supercolor > div").click(function(){ 
    $(this).toggleClass('selected').siblings('.selected').removeClass('selected'); 
}); 

는 ID의 귀하의 상황에서는 간단하지만 효과적입니다.

+0

실제로 배열을 저장하는 것은 처음부터 내 의도가 아닙니다. 이 질문을하는 이유는 실제로 사용자가 클릭하여 선택했는지 추적하는 것입니다. 클릭/선택시 div의 ID가 선택된 입력 체크 박스가 출력되므로 그런 다음 사용자가 다시 클릭하면 선택 취소되고 해당 div의 html 값은 아무 것도되지 않으므로 입력 확인란이 제거됩니다. 이것은 제가이 [link] (http://stackoverflow.com/questions/5932850/jquery-help-to-create-the-simplest-color-picker-ever)에서 이전에 물어 본 질문의 일부입니다. 어쩌면 당신은 한번 살펴보고 몇 가지 아이디어를 제안 할 수 있습니다.Tx – maomaopop

+0

다른 질문에 대한 답변을 추가했습니다. http://stackoverflow.com/questions/5932850/jquery-help-to-create-the-simplest-color-picker-ever#5940131 –

관련 문제