首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对jQuery对象的变量作用域访问

对jQuery对象的变量作用域访问
EN

Stack Overflow用户
提问于 2012-03-03 11:49:07
回答 2查看 248关注 0票数 2

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

代码语言:javascript
运行
复制
$("#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的值?这是正确的方法吗?还是有更好的方法来保存对象上的变量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-03 12:08:17

您可以通过'option'方法访问它:

代码语言:javascript
运行
复制
var myVar = $(this).dialog('option', 'myVar');

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

我不知道这是特定的还是偶然的行为,所以我不会依赖它。一种更自然的方法(IMO)是使用data附加额外数据:

代码语言:javascript
运行
复制
$('.dialog').data('myVar', 'hello world!').dialog({
    // ...
    open: function(event, ui) {
        var myVar = $(this).data('myVar');
        // ...

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

票数 4
EN

Stack Overflow用户

发布于 2012-03-03 12:03:25

您的变量"myVar“不是插件对话框(jquery ui)选项的一部分,您不能向对话框的构造函数添加额外的任意变量。

在我看来,更好的方法是将变量放在对话框之外:

代码语言:javascript
运行
复制
var myVar='hello world';
$( "#add-family-dialog" ).dialog({
    autoOpen: true,
    height: 450,
    width: 600,
    resizable : false,
    modal: true,
    open: function(event, ui) { 
        alert(myVar);
    }
});

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

代码语言:javascript
运行
复制
<input type="hidden" id="myVar" value="hello world" />

...in javascript

代码语言:javascript
运行
复制
alert($('#myVar').val());

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9543258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档