jQuery对象上的变量范围访问

时间:2012-03-03 03:49:07

标签: jquery jquery-ui jquery-selectors

我来自ExtJS背景,正在慢慢学习jQuery。我试图从对话框的myVar事件中访问我添加open的选项/属性的值。

$("#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 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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);
    }
});

...或者获取页面中隐藏的html元素的值

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

...在javascript中

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

我希望这会有所帮助。