jqueryUI关于子函数里的加载问题.

温柔哥 2011-06-03 04:20:59
有这样一段代码



addVtHeader: function (div, data, cellHeight) {
var headerDiv = jQuery("<div>", { "class": "ganttview-vtheader" }).append("<span class='divspan'>项目名称</span><span class='divspan1'>开始日期</span><span class='divspan1'>结束日期</span>");
for (var i = 0; i < data.length; i++) {
var itemDiv = jQuery("<div>", { "class": "ganttview-vtheader-item" });
itemDiv.append(jQuery("<div>", {
"class": "ganttview-vtheader-item-name",
"css": { "height": (data[i].series.length * cellHeight) + "px" }
}).append(data[i].name));
var seriesDiv = jQuery("<div>", { "class": "ganttview-vtheader-series" });
for (var j = 0; j < data[i].series.length; j++) {
var startname="starttime"+j;
var endname="endtime"+j;
var starttimeval=(data[i].series[j].start.getYear()+1)+"-"+(data[i].series[j].start.getMonth()+1)+"-"+data[i].series[j].start.getDate();
var endtimeval=(data[i].series[j].start.getYear()+1)+"-"+(data[i].series[j].end.getMonth()+1)+"-"+data[i].series[j].end.getDate();
seriesDiv.append(jQuery("<div>", { "class": "ganttview-vtheader-series-name" })
//.append(data[i].series[j].name));
.append(
"<input style='width:100px;' class='from' id='"+startname+"' value='"+starttimeval+"'/>"
+"<input style='width:100px;' class='to' id='"+endname+"' value='"+endtimeval+"'/>"
));

$(document).ready(function (){
$( "#"+startname+ ","+ "#"+endname ).datepicker({
showMonthAfterYear:true,
changeYear:true,
numberOfMonths: 1,
dateFormat: "yy-mm-dd",
onSelect: function( selectedDate ) {
alert("1");
var option = this.id == start ? "minDate" : "maxDate",
instance = $( this ).data( "datepicker" );
date = $.datepicker.parseDate(
instance.settings.dateFormat ||
$.datepicker._defaults.dateFormat,
selectedDate, instance.settings );
dates.not( this ).datepicker( "option", option, date );
}
});
});
}
// value='"+(data[i].series[j].start.getMonth()+1)+"月"+data[i].series[j].start.getDate()+"日'
// value='"+(data[i].series[j].end.getMonth()+1)+"月"+data[i].series[j].end.getDate()+"日'
itemDiv.append(seriesDiv);
headerDiv.append(itemDiv);
}
div.append(headerDiv);
},




其中$(document).ready(function (){
})里面的内容是我想在网页加载完成后就加载的. 上面的代码是一个函数的子函数模块,在网页加载完成后就成功加载了.
我现在就想给这2个input绑个日历.但是怎么试都无法加载成功,希望有经验的朋友帮忙看看,这一块的逻辑我不太懂.欢迎高手介入.


千万不要告诉我把日历提取到主页面然后绑click事件执行.
...全文
132 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
KerwinChe 2011-06-09
  • 打赏
  • 举报
回复
.append()里面的input是动态生成的 所以你要綁定事件要用.live()
$('#input1').live('focus',function (){

})

至于造成你現在的問题可能是因为你动态生成的input在页面加載時还没生成
所以这里的 $( "#"+startname+ ","+ "#"+endname ).datepicker(),
$('#startname'),$('#endname')應該是空对象.
解決方法是將$('XXX','XXX').datePicker()函數打包成一個函數

function datePickerFn(){
$('XXX','XXX').datePicker({...})
}
然后在你动态生成input后再运行一次datePickerFn()就可以了




温柔哥 2011-06-03
  • 打赏
  • 举报
回复
也有可能是 append里面的input无法绑定事件,不过使用ONCLICK写在内联是可以的,但是我写在下面的时候
alert("111") 有效
$(".from").click(function(){alert("111");}); 无效
希望高手有解决办法.

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧