【发布时间】:2016-01-31 02:29:50
【问题描述】:
我有一个应用程序有很多选项卡,除了第一个选项卡 - 所有其他选项卡都是通过 Ajax 加载的。
标签内容全部正确加载。 但是,如果我在(已加载 ajax 的)选项卡中有一个 jQuery 小部件,则该小部件不起作用。
我尝试使用:
$(document).on('click', '#dateOfBirth', function() {
$( '#dateOfBirth' ).datepicker();
});
但是日期选择器不显示。
令人困惑(对我来说):
$(document).on('click', '#dateOfBirth', function() {
alert('This works properly');
});
正常工作! “单击”日期字段时会显示警报。 当然,如果我有一个没有选项卡/ajax 内容的简单页面 - 单击日期字段时,日期选择器会按预期显示。
我正在使用 jQuery 2.2.0 和 带有“redmond”主题/CSS 的 jQuery UI 1.12.0。
视图html如下;
<div class = "emr-bodycontent">
<div id="tabs">
<ul>
<li><a href="#tabs-1">Patient Details</a></li>
<li><a href="@emr.controllers.pas.routes.CarerDetails.carerDetails()">Carers</a></li>
...
...
这是用于TABS的JS;
$( "#tabs" ).tabs({
beforeLoad: function( event, ui ) {
ui.jqXHR.fail(function() {
ui.panel.html(
"There seems to be an error retrieving the data you requested."
);
});
}
});
【问题讨论】:
-
这可能是因为日期选择器自己的代码。我唯一能想到的可能是日期选择器在页面加载时以某种方式使用现有的 DOM 元素初始化自己,所以如果你用 ajax 加载更多元素,它还不知道它们吗?
-
控制台日志有错误吗??
-
向我们展示您的 ajax 加载代码。元素存在时需要初始化插件。因此,如果您加载新元素...意味着在 ajax 回调中进行新的初始化。
event delegation是不同的......这就是为什么警报有效 -
我能猜到的唯一问题是,datepicker() 函数可能对您提供的信息有问题.....
-
还有什么是
#dateOfBirth??是div,select,date,input吗??
标签: javascript jquery jquery-ui jquery-events