【发布时间】:2012-04-21 06:30:49
【问题描述】:
我正在寻找一种在动态 html 场景中制作不显眼的 javascript(通过data-* 属性)的方法。假设我们有一个代表 jquery-ui 日期选择器的 input 元素:
<input type="date" data-min-date="today" />
以及起作用的js:
(function(){
$(function () {
$("input[type=date]").each(function () {
var el = $(this);
el.datepicker(el.data());
});
});
})(jQuery);
现在我需要不显眼的跨浏览器方式将裸输入转换为日期选择器。输入将被动态添加。一般来说,我无法控制添加日期选择器的代码。通常,代码将通过jquery.ajax.unobtrusive 或jquery-pjax 作为服务器端预呈现的html 注入(它们都使用jQuery.html() 方法)。但我需要更通用的解决方案,它适用于所有支持 jQuery 的场景。
我查看了mutation events,但它们在 IE 中不受支持。
完整的jsfiddle示例http://jsfiddle.net/zv9Rt/1/
【问题讨论】:
-
这些输入元素是如何添加的?通过 jQuery,还是通过 DOM?
-
@RobW,实际上它将是 jquery-pjax 或 jquery.ajax.unobtrusive。他们都使用 jquery.html 方法。但我想要更通用的解决方案。
-
您可以使用 setTimeout/setInterval 来检查是否有新的插入,或者包裹
.append、.html等,并检查是否存在新的input[type=date]元素。 -
@RobW 我想过 setTimeout/setInterval 但我不喜欢它们。
标签: jquery html dynamic unobtrusive-javascript