jQuery element.data()语法。我怎么知道“$(这个)”是什么?

jQuery element.data()语法。我怎么知道“$(这个)”是什么?,jquery,syntax,Jquery,Syntax,我有以下jQuery变量: var confirmbox=$('<div></div>') .data({'defaultText': 'This action cannot be reversed. Are you sure you wish to do this?', 'defaultButtons': { Yes : function() { $(this).dialog('close');},

我有以下jQuery变量:

var confirmbox=$('<div></div>')
        .data({'defaultText': 'This action cannot be reversed. Are you sure you wish to do this?',
               'defaultButtons': {  Yes : function() { $(this).dialog('close');}, 
                                    No  : function() { $(this).dialog('close');}
               }
        });
同样的失败语法现在也适用于这里:

confirmbox.dialog({
            autoOpen: false,
            modal: true,
            buttons: $(this).data('defaultButtons'),
            close: function(){
                $(this).html($(this).data('defaultText')); //working here. Why?
                $(this).dialog('option','buttons',$(this).data('defaultButtons'));
            }
        });

我想我不明白
$(this)
在特定上下文中指的是什么。我该怎么说呢?

就像你说的,都是关于背景的。
当执行dialog.close()函数时,this对象指向dialog实例,因此$(this)引用jQuery对话框对象。如果你正在执行

confirmbox.html($(this).data('defaultText'));//this fails. Why?

在全球范围内,这并不意味着什么。它指的是document.window对象,而不是您的对话框实例。

confirbox.dialog
中,
指的是
confirbox
对象。这就是
$(这个)
起作用的原因

confirbox.html($(this.data('defaultText'))行中
没有上下文,仅设置为
窗口


我不太擅长解释,但我希望这能有所帮助。

这是对当前上下文对象的引用。在失败的示例中,
可能指的是
窗口
对象(如果不是窗口,则指下一个直接封闭上下文)。例如,如果
window
有自己附加的
defaultText
数据,您就可以将其传递到
.html()

但是由于
.html()
也被设计为将函数作为参数,因此在该函数中,
将引用
confirbox
上下文。试着这样做:

confirmbox.html( function(){
  // this now refers to confirmbox
  return $(this).data('defaultText');
});

+1完全正确。修复方法是,呃,只使用第一种方法。这不应该是
return$(this).data('defaultText')
confirmbox.html( function(){
  // this now refers to confirmbox
  return $(this).data('defaultText');
});