2013-03-29 54 views
1

當我執行下面的腳本,只有一個值顯示在警報:如何使用jQuery的.data()函數保存兩個變量?

<script> 
    window.onload = function() { 
     var num = 15; 
     for (var i = 0; i < 10; i++) { 
      $('<tr style="background-color: aqua" id = ' + i + '></tr>').appendTo("table"); 
      for (var j = 0; j < 10; j++) { 
       num++; 
       $('<td id ='+num+'></td>').appendTo("#"+i); 
       $('<button>S</button>').data("field", i, j).appendTo("#" + num); 
      } 
     } 
     $('td').on('click', 'button', function() { 
      var d = $(this); 
      alert(d.data("field")); // here alert shows one variable 
     }); 
    } 
</script> 

我怎麼能存儲在元數據兩個值?也許我可以發送一個數組?

回答

1

您可以將它們設置爲objectarray。使用

alert(d.data("field").join(',')); // here alert shows one variable 

按照評論 「調用join(」「)

$('<button>S</button>').data("field", [i,j]).appendTo("#" + num); 

,並提醒他們實際上沒有必要,的toString()由數組實現的覆蓋已經執行此操作。 「。所以你可以簡單地全部

alert(d.data("field")); 

支票本上http://jsfiddle.net/xhPjh/

+0

調用'加入(「」)'是不是確有必要的'的toString()'通過陣列實現已經執行此操作覆蓋。 'alert(d.data(「field」))'就足夠了。 –

+0

@FrédéricHamidi感謝您的信息! – rab

1

您使用jQuery data方法存儲的數據可以是一個對象。所以,你可以存儲的值是這樣的:

$('<button>S</button>').data("field", { i: i, j: j}); 

而像這樣再次讀出來:

var d = $(this), 
    field = d.data("field"); 
alert(field.i); 
alert(field.j); 

你也應該考慮使用jQuery的ready方法,而不是window.onload

相關問題