2012-03-03 54 views
2

我來自ExtJS背景,並且正在慢慢學習jQuery。我試圖通過對話框的open事件訪問一個選項/屬性的值,該選項/屬性的值爲myVarjQuery對象的變量作用域訪問

$("#add-family-dialog").dialog({ 
    autoOpen: true, 
    height: 450, 
    width: 600, 
    resizable: false, 
    modal: true, 
    myVar: "hello world!", 
    open: function(event, ui) { 
     // TODO: get the myVar value 
     // this 
     alert($(this).myVar); 
     // or this 
     alert($(this).attr("myVar")); 
     // or this 
     alert(this.myVar); 
    } 
}); 

我該如何獲得myVar的價值?這是做到這一點的正確方法,還是有更好的方法來保持對象上的變量?

+2

如果你想存儲對DOM元素的值看看jQuery的['。數據( )'方法](http://api.jquery.com/data/)。 – nnnnnn 2012-03-03 03:54:05

回答

4

你可以通過'option'方法訪問:

var myVar = $(this).dialog('option', 'myVar'); 

演示:http://jsfiddle.net/ambiguous/ww5Gm/

如果這是指定的或意外的行爲,雖然,所以我不會依賴於它,我不知道。一種更自然的方法(IMO)是使用data附上你的額外數據:

$('.dialog').data('myVar', 'hello world!').dialog({ 
    // ... 
    open: function(event, ui) { 
     var myVar = $(this).data('myVar'); 
     // ... 

演示:http://jsfiddle.net/ambiguous/R9z8D/

0

您的變量「myVar」不是插件對話框(jquery ui)的選項的一部分,您不能將其他任意變量添加到對話框的構造函數中。

在我看來,更好的方法是有對話外的變量:

var myVar='hello world'; 
$("#add-family-dialog").dialog({ 
    autoOpen: true, 
    height: 450, 
    width: 600, 
    resizable : false, 
    modal: true, 
    open: function(event, ui) { 
     alert(myVar); 
    } 
}); 

......或讓你的網頁

<input type="hidden" id="myVar" value="hello world" /> 

隱藏的HTML元素的值.. .in javascript

alert($('#myVar').val()); 

我希望這有助於。