jQuery element.data()语法。我怎么知道“$(这个)”是什么?
我有以下jQuery变量: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');},
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');
});