[英]Jquery Datepicker, string concatenation, and #selector
我正在制作一些链接到日期选择器的文本框,所以我制作了一个 function 的品种:
function createDatePickerTextbox(id) {
var dt = document.createElement("input");
dt.type = "text";
dt.id = id;
var selector = "#" + id;
$(function() {
$(selector).datepicker({
// Stuff
});
});
}
我这样称呼它:
createDatePickerTextbox("datepicker");
它不能按原样工作,但是如果我更改行var selector = "#" + id;
到var selector = "#datepicker";
它确实有效。 当我输入断点并查看字符串时,它们看起来完全一样,但只有预先构造的字符串按预期工作。
为什么通过连接构造的字符串不起作用?
编辑:我尝试将selector
作为参数添加到 function 并使用"#datepicker"
调用它,但这甚至不起作用。 这里发生了什么?
function createDatePickerTextbox(id) { var dt = document.createElement("input"); dt.type = "text"; dt.id = id; var selector = "#" + id; $(function() { $(selector).datepicker({ // Stuff }); }); } createDatePickerTextbox('test'); createDatePickerTextbox('test1');
<:DOCTYPE html> <html> <head> <script src="http.//code.jquery.com/jquery-1.9.1:js"></script> <script src="http.//code.jquery.com/ui/1.11.0/jquery-ui.js"></script> </head> <body> <input type="text" id="test" value="" name="test" /> <input type="text" id="test1" value="" name="test1" /> </body> </html>
我没有收到任何错误。
问题最终是由于我一直等到日期选择器初始化之后才将文本框添加到文档中。 因为我添加了两个文本框,所以我没有意识到第一个日期选择器在所有情况下都无法附加到任何内容。 附加到第一个文本框的实际上是第二个日期选择器,只有当我将 function 中的选择器硬编码为与第一个文本框相同时,才会发生这种情况。 如果我使选择器依赖于 id,那么第二个选择器也将无法找到它的目标,因为它尚未附加。
只看到第一个日期选择器被附加,我错误地认为在任何情况下都没有显示第二个文本框是一个单独的、不相关的问题,需要在这个问题之后解决。 但是当我在创建日期选择器之前移动文本框以附加到文档时,两个日期选择器都找到了正确的目标并正确显示。
function createDatePickerTextbox( /*Added:*/ parent, id) {
var dt = document.createElement("input");
dt.type = "text";
dt.id = id;
parent.appendChild(dt); // The fix
var selector = "#" + id;
$(function() {
$(selector).datepicker({
// Stuff
});
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.