jqueryUI关于子函数里的加载问题.
有这样一段代码
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); },
[解决办法]
.append()里面的input是动态生成的 所以你要綁定事件要用.live()
$('#input1').live('focus',function (){
})
至于造成你現在的問题可能是因为你动态生成的input在页面加載時还没生成
所以这里的 $( "#"+startname+ ","+ "#"+endname ).datepicker(),
$('#startname'),$('#endname')應該是空对象.
解決方法是將$('XXX','XXX').datePicker()函數打包成一個函數
function datePickerFn(){
$('XXX','XXX').datePicker({...})
}
然后在你动态生成input后再运行一次datePickerFn()就可以了