当我将它应用于静态元素时,我以前出现了我的日期选择器,但由于某种原因,我无法让它动态地工作。在某些配置下,如果我先弹出一个警告框,它就可以工作。有什么问题?
div.load(url, function() {
div.children().each( function(){this.datepicker({dateFormat:"yy-m-d"}});
div.appendTo("div#foos_container");
});
以下是更多背景信息:
使用Javascript:
add_foo = function(url) {
// Clickable
var numfoos = $("div#foos_container > div.foo").length + 1;
var foo_id = numfoos + "-foo";
var div = $("<div></div>").attr("id",foo_id).addClass("foo");
div.load(url, function() {
div.children().each(function(){
// what do expect this to be below?
// this will be a child element here, so need
// to wrap to get a jQuery object
$(this).datepicker({dateFormat:"yy-m-d"});
});
div.appendTo("div#foos_container");
});
HTML:
<a id="add_foo" onclick="add_foo('{% url add-foo %}')" class="ajax_link">Add Foo</a>
<div id="foos_container">
</div>
谢谢!
编辑:添加了上下文。我应该注意HTML是一个django模板。
答案 0 :(得分:1)
试
div.load(url, function() {
div.children().each(function(){
// what do expect this to be below?
// this will be a child element here, so need
// to wrap to get a jQuery object
$(this).datepicker({dateFormat:"yy-m-d"});
});
div.appendTo("#foos_container");
});
根据您的编辑,请尝试以下操作。
add_foo = function(url) {
// Clickable
var numfoos = $("#foos_container > div.foo").length + 1;
var foo_id = numfoos + "-foo";
var div = $("<div></div>").attr("id",foo_id).addClass("foo");
div.appendTo("#foos_container").load(url, function() {
div.children().each(function(){
// what do expect this to be below?
// this will be a child element here, so need
// to wrap to get a jQuery object
$(this).datepicker({dateFormat:"yy-m-d"});
});
};
您希望this
在div.children().each( ...)
中有什么期望?
修改强>
这是一个 Working Demo ,模拟了我相信你想要实现的目标。将 / edit 添加到URL以查看代码并使用它(以下示例)。
<a id="add">Click me to add a div via AJAX Load</a>
<div id="foos_container"></div>
$(function() {
$('#add').click(function() {
var numfoos = $("#foos_container > div.foo").length + 1;
var foo_id = numfoos + "-foo";
var div = $("<div></div>").attr("id",foo_id).addClass("foo");
div.appendTo("#foos_container").load("http://jsbin.com/ejalo", function() {
div.children().each(function(){
$(this).datepicker({dateFormat:"yy-m-d"});
});
});
});
});
答案 1 :(得分:1)
在$(function(){});
:
$('input').filter('.datepicker').datepicker();
我认为你不需要任何其他垃圾,例如each
,load
等等。只是doc.ready函数中的filter
。