7

すべて、デバッグしようとしているコードがいくつかあり、JS コンソールで次のコードを使用しました。

clickEvents = $('ul.breadcrumb[data-allownextonly]').data("events").click;
jQuery.each(clickEvents, function(key, value) {
    console.log(value.handler);
})

これを実行すると、次のエラーが表示されます: TypeError: undefined is not a function

私の質問は、これが起こる原因は何ですか? 私が読んだほとんどのことから、jQuery が適切にロードされていないか、2 つのスクリプト間に競合があるという事実を扱っています。jQuery が正常に動作しているページに他のオブジェクトがあるため、jQuery は適切に読み込まれます。私はWordpressを使用しているので、すでに競合はありません。

コンソールで、JS のデバッグを次のように変更しました。

 clickEvents = jQuery('ul.breadcrumb[data-allownextonly]').data("events").click;
jQuery.each(clickEvents, function(key, value) {
    console.log(value.handler);
})

これを実行すると、次のエラーが発生します: TypeError: Cannot read property 'click' of undefined

これらのエラーが発生する他の理由を誰かに教えてもらえますか? 競合するスクリプトまたはそれらの行に沿った何かがある場合、競合がどこにあるかをどのように見つけることができますか?

ありがとう!

4

3 に答える 3

3

jQuery APIによると.data( key )、一致した要素にキーに一致するデータがない場合、メソッドはundefinedを返します。その使用法を見てくださいhttp://api.jquery.com/data/。いずれの場合も、一致したセットの最初の要素に対してのみ動作するため、クリックイベントハンドラーの配列を取得するために使用することはできません。このように、最初に一致した要素にはデータ属性「イベント」がないということです。添付されたデータを取得したら、

var clickEvents = [];
$( selector ).data( key ).each( function() { 
    clickEvents.push( $(this).click );
});

クリックイベントを収集します。

于 2012-05-31T03:45:45.547 に答える
0

初期化されていない、または不適切に初期化されている関数を実行しようとすると、このエラーが発生します。

于 2012-05-31T03:25:39.343 に答える
0

のように見えるので、それjQuery('ul.breadcrumb[data-allownextonly]').data("events")undefined間接参照するとエラーが発生します。

ところで、に変更$jQueryてもコードはあまり変わりません。jQueryがロードされていない場合は、別のエラーが発生します。

于 2012-05-31T03:30:34.283 に答える