Jquery ui 为什么未定义$(…).widget?
根据,应该可以在jQuery对象上调用名为widget的方法来操作小部件。例如:Jquery ui 为什么未定义$(…).widget?,jquery-ui,Jquery Ui,根据,应该可以在jQuery对象上调用名为widget的方法来操作小部件。例如: $( ".selector" ).widget({ disabled: true }); 但是,尝试调用此方法会引发异常,并且实际显示$(…).widget是未定义的: $('#btn')。按钮(); $('body')。追加('$(\''btn\')。小部件是'+$(''btn')。小部件); console.log($('#btn').widget) 按钮在阅读了您链接的文档后,它似乎是正确的,但有误
$( ".selector" ).widget({
disabled: true
});
但是,尝试调用此方法会引发异常,并且实际显示$(…).widget
是未定义的:
$('#btn')。按钮();
$('body')。追加('
$(\''btn\')。小部件是'+$(''btn')。小部件);
console.log($('#btn').widget)代码>
按钮
在阅读了您链接的文档后,它似乎是正确的,但有误导性:我认为这里的小部件
是指用实际的小部件名称替换,例如对话框
或菜单
或其他什么
事实上,例如,为了启用或禁用按钮,通常会调用:
$('#your_button').button('disabled', true);
以及访问小部件本身:
$('#your_button').button('widget');
文档可能有点混乱。它使用名称“widget”作为自定义小部件的占位符,以便提供默认基本小部件提供的选项/方法的示例。JQueryUI本身从不提供具有显式名称“widget”的小部件。你可以用
$.widget("ns.widget", {});
使样本按原样运行
另外,请注意,由于继承模型的原因,在节点上实例化派生小部件将只为派生小部件创建数据,而不是为基础创建数据。因此,您只能使用实例化小部件的名称调用方法:
$.widget("ns.subButton", $.ui.button, {});
$("#btn").subButton();
$("#btn").subButton("widget"); // <- correct use
$("#btn").button("widget"); // <- error
$.widget(“ns.subButton”,$.ui.button,{});
$(“#btn”).subButton();
$(“#btn”)。子按钮(“小部件”);//在所选元素($('#btn')
)上定义函数widget()
,而不是成员变量。@hotzst在JS中,属性由其标识符访问。如果它是一个函数,则原语值或任何其他对象都是无关的。请尝试$('#btn').css
查看。@Amit这不是您调用JQueryUI小部件方法的方式。定义的jQuery插件(可以像jQuery集合上的属性一样调用)是小部件名称,调用它并将方法名称作为字符串参数提供。在您的示例中,它将是$('#btn')。按钮('widget')
。Ref here:@blgt-我的示例来自文档。我发布的链接会将您带到确切的位置,代码是1:1相同的。我的问题是文档是否有误,或者我是否遗漏了其他内容。文档似乎是正确的,但有误导性,我认为这里的widget
应该用实际的widget名称替换,例如dialog
或menu
或其他任何内容。实际上这很有意义:-)我想使用的原因(不正确的)$(…)。widget
就是为了避免这种情况。我试图抓住实例(通过$(…).widget('instance')
),然后在不“知道”的情况下对其进行操作使用的正是widget。我想是这样的,这就是为什么我加入了关于继承widget的说明;但我认为没有办法做到这一点。我记得不久前回答了一个有点相关的问题: