Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 为什么未定义$(…).widget?_Jquery Ui - Fatal编程技术网

Jquery ui 为什么未定义$(…).widget?

Jquery ui 为什么未定义$(…).widget?,jquery-ui,Jquery Ui,根据,应该可以在jQuery对象上调用名为widget的方法来操作小部件。例如: $( ".selector" ).widget({ disabled: true }); 但是,尝试调用此方法会引发异常,并且实际显示$(…).widget是未定义的: $('#btn')。按钮(); $('body')。追加('$(\''btn\')。小部件是'+$(''btn')。小部件); console.log($('#btn').widget) 按钮在阅读了您链接的文档后,它似乎是正确的,但有误

根据,应该可以在jQuery对象上调用名为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的说明;但我认为没有办法做到这一点。我记得不久前回答了一个有点相关的问题: