2013-03-15 74 views
1

我剛剛遇到了一個讓我困惑了一陣子的問題,當我搜索時我沒有看到它的問題,所以我會在這裏發佈它幫助那些相同的人(真的很笨但很難看)錯誤。如果沒有人在一個小時內得到它,我會發布答案。JQuery .each給此對象{}

我的錯誤是什麼?

$('.myEndDate').each(new function (index) { 
    $(this).datepicker(
     { 
     changeMonth: true, 
     numberOfMonths: 1, 
     onClose: function (selectedDate) { 
      $('.myStartDate').datepicker("option", "maxDate", selectedDate); 
     } 
     }); 
    }); 

結果是,Firefox的精縮jQueryUI的JavaScript的內拋出了這個可愛的錯誤:

TypeError: e.nodeName is undefined 
http://localhost:8080/MyUI/scripts/jquery-ui-1.10.2.custom.min.js Line 
1322 

當我在Firebug調試,似乎this

this Object {} 

這是可能我是唯一一個發現這個錯誤的人,這就是爲什麼我沒有找到它的問題。萬一別人也有類似的大腦放屁,也許我可以爲他們節省一定的時間:)

+4

嗯,爲什麼'新功能'? – elclanrs 2013-03-15 00:42:24

+1

爲什麼每個? ,替換選擇器 – Sedz 2013-03-15 00:45:52

+0

^是的,你不需要'each',你可以在整個'.myEndDate'選擇器上調用'datepicker'。 – elclanrs 2013-03-15 00:47:31

回答

4

的錯誤是由包括函數聲明之前new關鍵字你實際上傳遞一個空對象參數jQuery的each而不是一個函數讓它在每次迭代回調。正如你所指出的那樣,結果是,this引用空對象,所以用於實例化jQuery UI datePicker的選擇器不會返回導致在控制檯中看到的錯誤的DOM節點。

this stackoverflow thread這也解釋了,你已經錯誤地使用的結構是在JavaScript中創建一個新對象的一個​​非常有效的方法,它只是是不是在這種情況下使用任何你。

1

你不需要使用每個只使用選擇的日期選擇

$('.myEndDate').datepicker(
    { 
    changeMonth: true, 
    numberOfMonths: 1, 
    onClose: function (selectedDate) { 
     $('.myStartDate').datepicker("option", "maxDate", selectedDate); 
    } 
    }); 

,並在使用時each你不需要說new function

我希望這能幫助:)

相關問題