1

しばらく困惑する問題に遭遇しましたが、検索してもSOの質問が表示されないので、同じことをしている人々を助けるためにここに投稿します(本当にばかげているが難しい参照)間違い。1 時間以内に誰も回答が得られない場合は、回答を投稿します。

私の間違いは何ですか?

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

2 に答える 2

4

間違いは、関数宣言の前にキーワードを含めることで、各反復でコールバックする関数ではなく、new実際に空のオブジェクトをパラメーターとしてjQueryに渡すことです。eachご指摘のとおり、結果はthis空のオブジェクトを参照するため、jQuery UI datePickerをインスタンス化するために使用するセレクターはDOMノードを返さず、コンソールに表示されるエラーにつながります。

誤って使用した構成が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 に答える