首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

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

2012-03-09 
jqueryUI关于子函数里的加载问题.有这样一段代码HTML codeaddVtHeader: function (div, data, cellHeight)

jqueryUI关于子函数里的加载问题.
有这样一段代码 


HTML code
        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事件执行.



[解决办法]
.append()里面的input是动态生成的 所以你要綁定事件要用.live()
$('#input1').live('focus',function (){

})

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

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


 

热点排行