确定标准 jQueryUI 小部件的类型
Determining the type of a standard jQueryUI widget
我无法确定给定 jQueryUI
小部件实例的类型。
jQueryUI documentation for the Widget Factory 提出了两种技术。来自 "Instance" 部分:
The widget's instance can be retrieved from a given element using the
instance() method. [...]
If the instance() method is called on an element that is not
associated with the widget, undefined is returned.
the :data selector can also determine whether an element has a given
widget bound to it.
根据他们的例子,假设我初始化了一个日期选择器,然后代码检查它是否是一个日期选择器:
<p>Date: <input type="text" id="datepicker"> </p>
$(function() {
$("#datepicker").datepicker();
// ...
var i = $("#datepicker").progressbar("instance"); // i is undefined as expected
console.log(i);
var b = $("#datepicker").is(":data('ui-datepicker')"); // b = false, not sure why
console.log(b);
var i2 = $("#datepicker").datepicker("instance"); // this throws an exception
console.log(i2);
});
根据文档,我预计 .is
对 return 的调用为真,最后一行 return 实例(不抛出异常。)
JSFiddle is here。 (您需要打开浏览器的控制台才能看到记录的输出。)
事实证明我上面列出的技术适用于许多 jQueryUI 小部件,例如按钮,进度条。
但是日期选择器有点奇怪。在初始化日期选择器后查看 DOM,我看到日期选择器作为新元素插入 在 命名元素之后。
要获取日期选择器小部件实例,我需要从命名元素开始导航 DOM。要检查输入字段上是否有日期选择器,我们可以简单地检查 class hasDatepicker:
的元素
var isDatePicker = $("#datepicker").is(".hasDatepicker");
这适用于 jQueryUI 1.11.2,并且基于其他 SO 问题,它自 2009 年以来一直在使用。所以我想这是一种可靠的技术,但我不确定它是否在任何地方记录,或保证未来版本。
我无法确定给定 jQueryUI
小部件实例的类型。
jQueryUI documentation for the Widget Factory 提出了两种技术。来自 "Instance" 部分:
The widget's instance can be retrieved from a given element using the instance() method. [...] If the instance() method is called on an element that is not associated with the widget, undefined is returned.
the :data selector can also determine whether an element has a given widget bound to it.
根据他们的例子,假设我初始化了一个日期选择器,然后代码检查它是否是一个日期选择器:
<p>Date: <input type="text" id="datepicker"> </p>
$(function() {
$("#datepicker").datepicker();
// ...
var i = $("#datepicker").progressbar("instance"); // i is undefined as expected
console.log(i);
var b = $("#datepicker").is(":data('ui-datepicker')"); // b = false, not sure why
console.log(b);
var i2 = $("#datepicker").datepicker("instance"); // this throws an exception
console.log(i2);
});
根据文档,我预计 .is
对 return 的调用为真,最后一行 return 实例(不抛出异常。)
JSFiddle is here。 (您需要打开浏览器的控制台才能看到记录的输出。)
事实证明我上面列出的技术适用于许多 jQueryUI 小部件,例如按钮,进度条。
但是日期选择器有点奇怪。在初始化日期选择器后查看 DOM,我看到日期选择器作为新元素插入 在 命名元素之后。
要获取日期选择器小部件实例,我需要从命名元素开始导航 DOM。要检查输入字段上是否有日期选择器,我们可以简单地检查 class hasDatepicker:
的元素var isDatePicker = $("#datepicker").is(".hasDatepicker");
这适用于 jQueryUI 1.11.2,并且基于其他 SO 问题,它自 2009 年以来一直在使用。所以我想这是一种可靠的技术,但我不确定它是否在任何地方记录,或保证未来版本。