最も賢いことです。 Firefoxでは、この行でevent.target.id Chromeでのみ動作します
var clicked_el = event.target.id;
この関数ブレーク:
は、私が呼び出す関数を持っています。これはie9では動作しますが、8では動作しません(ie8はsrcElementを使用するため)。イベントを開始した要素のIDを取得しようとするすべての試みは、私の最後に完全な失火です。
jQueryがjQuery.Event
でブラウザの不調和を平滑化する方法があると思いますが、何も動作しません。
これを行うにはブラウザの一貫性のある方法を教えてもらえますか?
ここに関数があります。これは私のバックボーンビューの一部です。
open: function() {
iconState = true;
var self = this;
var clicked_el = event.target.id;
$('div.hr, div#footer_icons').animate({
top : '-=300'
}, 500, function() {
if (innerContentIsVisible === false) {
$('#a_close').fadeIn(500);
}
});
$('div#article').animate({
opacity : 0
}, 500,function() {
self.load_content(clicked_el);
});
},
UPDATE
open
関数が別の関数から呼び出されていた、と私はそれがundefined
を返した理由であるopen
機能を、呼び出されたときにイベントのparamaterを渡すのを忘れていました。
click: function(event) {
if (iconState === false) {
this.open(event);
} else {
var self = this;
var clicked_el_icon = event.target.id;
$('div#loaded_content').fadeOut(250, function() {
self.load_content(clicked_el_icon);
});
}
},
open: function (event) {
iconState = true;
alert(event);
var self = this;
var clicked_el = event.target.id;
$('div.hr, div#footer_icons').animate({
top : '-=300'
}, 500, function() {
if (innerContentIsVisible === false) {
$('#a_close').fadeIn(500);
}
});
$('div#article').animate({
opacity : 0
}, 500,function() {
self.load_content(clicked_el);
});
},
おかげで...私はこの教訓を忘れてはいけません。ここに
は今event
のparamを渡す機能です。
'event'はどこに定義されていますか?通常、それは 'open:function(event){'であるはずです。 –
@DavidThomas Yea、それは問題のようです。 firefoxは私に 'イベントが定義されていません'というエラーを出します。この関数は、サイドバーの要素がクリックされた後に呼び出されます。クリックされた要素のIDを取得する必要があります。これにより、load_contentに渡して適切なコンテンツを読み込むことができます。以前は 'event'を定義していませんでしたが、jqueryでこれを囲むべきですか? – Lsdafjklsd
私は括弧の中にイベントを入れないだけの理由はありますか?最初のコメント?なぜ複雑なこと? –