2011-08-01 3 views
3

사용자가 마우스로 선택하는 아이콘이 있습니다.나중에 사용할 수 있도록 jQuery 객체를 배열에 저장할 수 있습니까?

테두리를 선택하고 설정할 수있는 일련의 아이콘이 있습니다. 선택된 아이콘의 수를 5로 제한하고 있습니다. 처음 선택한 것은 노란색 경계선이됩니다. 다음 4는 검은 색 테두리입니다. document.ready에

, 내가 할 :

$ ('img.selectable')을 클릭 (함수() { image_click (이);});. CSS를 들어

:

.selectable { 
    border: 3px solid #ebe6b3; 
    float:left; 
    margin:1px; 
} 

되는 HTML의 경우 :

<img class="selectable" src="img/first_icon.png"> 

나는이 기능을 가지고 :

첫 번째 아이콘이 있어야한다
function image_click(e) 
{ 
    if($(e).data("clicked")=="yes") 
    { 
     images_selected--; 
     $(e).data("clicked","no").css('border','3px solid ' + NEUTRAL_COLOR); 
     if(images_selected==1) 
     { 
      $('img.selectable').not(e).filter(function() { 
        return $(this).data("clicked")=="yes"; 
        }).css('border','3px solid ' + YELLOW_COLOR); 

     } 
    } 
    else 
    { 
     if (images_selected<5) 
     { 
      images_selected++; 
      if(images_selected==1) 
      { 
       $(e).data("clicked","yes").css('border','3px solid ' YELLOW_COLOR); 
      } 
      else 
      { 
       $(e).data("clicked","yes").css('border','3px solid ' + BLACK_COLOR); 
      } 
     } 
    } 
}; 

, 그것은 항상 황색이 될 것입니다. 객체의 순서를 저장하는 순서 배열을 사용하여이를 수행하려고 생각했습니다. 것은 내가 배열에서 개체를 호출하고 여전히 CSS 기능을 유지할 수있을 것 같지 않습니다.

내가 좋아하는 뭔가 생각 : 어떤 시점에서

var x=[]; 

image_click(e){.. 내부 나는 객체 저장 :

$(e).data("order",clicked_img); 

    x[clicked_img]=e; 

을하고 나는 그것을 튀어 나올 때

alert(x[clicked_img].data("order")); 
...} 

하지만 .... 데이터에 대한 액세스 권한이없는 것 같습니다. 객체가 jQuery 영역을 떠난 것처럼 그것은 시민권을 잃어 버렸다. 데이터 변수에 액세스하는 방법을 모르겠습니다.

도와주세요. 감사합니다.

답변

2

처럼

x[clicked_img]=$(e); 

해야한다.

간단한 해결책 : jQuery 영역에 다시 넣으십시오.나는 크로스 브라우저 의미의 확실 해요로 후자는 지금은 사용하지 않는 것이 좋습니다

x[clicked_img] = e; // assuming e is the DOM element, not the event 
// ... 
alert(x[clicked_img].dataset.order); 

:

x[clicked_img] = $(e); 
// ... 
alert(x[clicked_img].data("order")); 

나 :

x[clicked_img] = e; 
// ... 
alert($(x[clicked_img]).data("order")); 

또는 당신은 몇 가지 옵션이 있습니다 그러나 어쨌든 "정규"자바 스크립트에서 그렇게하는 것입니다.

첫 번째 방법을 제안합니다. $(e)image_click의 시작 부분에있는 변수에 할당해야하므로 매번 jQuery 개체가 다시 작성되지 않습니다.

+0

그것은 매우 도움이되었다, 고마워! – Ted

4

jQuery 객체가 아니라 DOM 요소를 저장했습니다. 객체가 그것이 시민 권리입니다 잃은 JQuery와 영역을 떠날 때 그것은하지

x[clicked_img]=e; 
+0

그래, 그 대답입니다. 부끄러움 나는 너희 둘 모두를 대답으로 표시 할 수는 없다. 더 광범위하고 유익했기 때문에 다른 답변을 표시했지만 감사합니다! – Ted

관련 문제