jQuery.die remove() -vs.- $('#id').remove() im Internet Explorer (IE 9+)
Warum ist es, dass this.remove()
funktioniert nicht im IE9+?
<input type="button" value="Next1" id="nextButton1">
<br>
<input type="button" value="Next2" id="nextButton2">
$('#nextButton1').on('click', function() {
this.remove(); //works in all browsers but IE9+
});
$('#nextButton2').on('click', function() {
$('#nextButton2').remove(); //works in all browsers
});
versuchen Sie $(this).entfernen()
Sie scheinen anzunehmen, dass
Shim:
Sie scheinen anzunehmen, dass
this
ist ein jQuery-Objekt. Es ist nicht. Bitte Lesen Sie die jQuery-tutorial: "neben dem event-Objekt das event-handling-Funktion auch Zugriff auf das DOM-element, das den handler gebunden war, um über das Schlüsselwort this
. Um die DOM-Elements in ein jQuery-Objekt, dass wir verwenden jQuery-Methoden auf, die wir einfach tun $( this )
oft nach diesem idiom: var element = $( this );
"Shim:
if (!HTMLElement.prototype.remove) HTMLElement.prototype.remove = function() { return this.parentNode.removeChild(this) };
InformationsquelleAutor pemoke | 2014-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil Sie mit der
ChildNode.remove()
Methode, die nicht von allen Browsern unterstützt.jQuery
.remove()
Methode, allerdings ist cross-browser-und-so zu verwenden, müssen Sie wrapthis
im$(...)
wie diese:ChildNode.die remove () - Browser Kompatibilität
this.remove()
wird unterstützt von den folgenden desktop-Browsern:Wie wäre
$('.link').remove()
? Vielleicht möchten Sie bitten, eine vollständige Frage damit wir wissen, Kontext. .... Wenn der Kontextthis
dann versuchen$(this).filter('.link').remove()
InformationsquelleAutor PeterKA
Wrap
this
im jQuery:InformationsquelleAutor Joseph Silber
Fragte man warum, so ist hier, warum:
Im Rahmen einer jQuery event-handler,
this
bezieht sich auf das DOM-element referenzieren, das jQuery-Shops für das element, das Sie derzeit den Umgang mit Ereignissen. Da die.remove()
Funktion, die Sie beabsichtigen zu verwenden ist ein jQuery -member-Funktion, und nicht eine native DOM-browser-Funktion, es funktioniert nicht wie erwartet.Jedoch, wenn Sie wickeln die DOM-Referenz innerhalb der
$()
oderjQuery()
, so wird es$(this)
stattthis
, die$
oderjQuery
Funktion nimmt die DOM-Referenz als parameter und gibt eine jQuery-Referenz, das ist dann in der Lage, jQuery member-Funktionen aufgerufen.Können Sie immer Ihren pass DOM Verweise auf jQuery und Holen Sie sich jQuery Referenzen zurück
E. g.
http://jsfiddle.net/2h45Y/
Bearbeitet für Klarheit.
InformationsquelleAutor Alex W