1

我刚刚遇到了一个困扰我一段时间的问题,当我搜索时我没有看到一个 SO 问题,所以我将把它贴在这里以帮助那些做同样事情的人(真的很愚蠢但很难见)错误。如果一个小时内没有人得到它,我会发布答案。

我的错误是什么?

  $('.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

当我在萤火虫中调试时,似乎this

this    Object {}

有可能我是唯一一个找不到这个错误的人,这就是为什么我没有找到问题的原因。以防万一其他人有类似的大脑放屁,也许我可以为他们节省一些时间:)

4

2 回答 2

4

错误在于,通过new在函数声明之前包含关键字,您实际上是在将一个空对象作为参数传递给 jQuery,each而不是在每次迭代时回调它的函数。正如您所指出的,结果是this指空对象,因此您用于实例化 jQuery UI datePicker 的选择器不会返回导致您在控制台中看到的错误的 DOM 节点。

请参阅此 stackoverflow 线程,它解释了您错误使用的构造是在 JavaScript 中创建新对象的完全有效的方法,在这种情况下它对您没有任何用处。

于 2013-03-15T01:09:14.600 回答
1

您不需要使用每个只需使用日期选择器的选择器

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

并且在使用时each你不需要说new function

我希望这可以帮助:)

于 2013-03-15T00:51:16.573 回答