2011-08-01 6 views
3

私は、ユーザーがマウスで選んだアイコンをいくつか持っています。jQueryオブジェクトを後で使用するために配列に保存するにはどうすればよいですか?

私は、この境界線を選択して設定できるこの一連のアイコンを持っています。選択したアイコンの数を5に制限します。最初に選択されたアイコンは黄色の境界になります。次の4つは黒の境界になります。 document.readyで

、私が行います

$( 'img.selectable')をクリックします(関数(){ image_click(これを);});。 HTMLの場合

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

:CSSについては

<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機能を保持しているようです。

私のようなものを考えていた

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

    x[clicked_img]=e; 

と、私はそれを飛び出し:

alert(x[clicked_img].data("order")); 
...} 
私はオブジェクトを格納いくつかの点で image_click(e){..

var x=[]; 

BUT .... 私はもうデータにアクセスできないようです。オブジェクトがjQuery領域を去ったときのように、それはそれを失いました。データ変数にアクセスする方法がわかりません。

お願いします! ありがとう!

答えて

2

同様

x[clicked_img]=$(e); 

でなければなりません。

単純な解決策:jQuery領域に戻します。あなたはカップルのオプションがあります。

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

か:

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

か:私はクロスブラウザの意味がわからないんだと

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

後者は、今では推奨されません、どんな場合でも、それはあなたが "普通の" JavaScriptでそれを行う方法です。

最初の方法をお勧めします。$(e)image_clickの先頭の変数に割り当てて、毎回jQueryオブジェクトを再構築しないようにする必要があります。

+0

これはとても役に立ちました、ありがとう! – Ted

4

jQueryオブジェクトではなく、DOM要素を保存しました。オブジェクトは、それが市民権 だ失われたjQueryのレルムを去ったとき、それはない

x[clicked_img]=e; 
+0

これは答えです。恥ずかしがり屋私はあなたの両方に答えられた唯一のひとつを記入することはできません。私はそれがより広範で有益であったので、他の答えに印を付けましたが、ありがとう! – Ted

関連する問題