Arbeiten mit event.stopPropagation() auf firefox und IE
Nicht warum dieser code funktioniert für Firefox und IE?
Es ist in Ordnung auf chrome.
$(document).click(function(e) {
if ($(".contentIconDesk").hasClass('markIconDesk')) {
$(".contentIconDesk").removeClass('markIconDesk');
wndSelected = "";
}
});
function markMe(icon, wnd) {
event.stopPropagation();
if ($('#'+icon).hasClass('markIconDesk')) {
$(".contentIconDesk").removeClass('markIconDesk');
wndSelected = "";
} else {
$(".contentIconDesk").removeClass('markIconDesk');
$('#'+icon).addClass('markIconDesk');
wndSelected = wnd;
}
};
Die Funktion MarkMe();
heißt im Falle onClick()
von ein paar div in meinem HTML. Das problem ist mit der event.stopPropagation()
. Wenn ich auf hinzufügen-Klasse, die browser fangen das klicken auf $(document)
.
Wenn es eine gute Anregung, statt mit dem code oben, wird es groß sein.
- Veröffentlichen der HTML-Code für die div-Sie zu..
- Sie können die initiator der das click-Ereignis über das Ereignis.Ziel finden Sie unter api.jquery.com/event.target, zum Beispiel
if ($(e.target).is("div")) return;
in Ihrem Dokument klicken Sie auf binden. - Warum sind Sie mit jQuery und
onclick
event-Handler? - Danke @Walid. Dein Tipp war sehr nützlich.
- Ich habe nicht einen Weg finden, um die Parameter wie diese:
onclick="markMe($(this).attr('id'), 'stores');"
mit der jQuery-Funktion:$("#icon_1").click()
. Sorry, aber ich bin irgendwie ein Neuling in js und jQuery. Aber ich studiere es kaum.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, diese. Für das div im HTML, ändern Sie diese wie folgt:
- Und in deiner js verwenden Sie es wie:
IE nicht unterstützt stopPropagation Methode im DOM. Sie können Ereignisse verwenden.cancelBubble = true (ich meine, die Eigenschaft cancelBubble des event-Objekts) statt. Haben Sie einen Blick auf diese
Weil
event
ist nicht definiert in diesem Stück code:Müssen Sie die pass-Ereignis als parameter der
MarkMe
FunktionDann, wenn Sie es nennen, es sollte wie folgt Aussehen :