Ich schreibe ein Plugin für jQuery, die ein span-Element um ein Eingabe (Text) -Element umschließt. Wenn ich die Formularelementeingabe bind() oder live() anlege, um dem übergeordneten Element Klassen hinzuzufügen/zu entfernen, funktioniert die Bindung nicht. Folgendes berücksichtigen;jQuery binden oder Live funktioniert nicht wie erwartet in meinem Plugin
(function($){
$.fn.MyPlugin = function() {
var $this, $tag;
return this.each(function(){
$this = $(this);
$tag = $(document.createElement('span'));
$this.wrap($tag).bind('mouseover',function(){
$tag.addClass('hover');
});
}
})(jQuery);
Verwendung von Google Chrome und dem Betrachten der Elemente und Konsolenausgabe, erwarte ich die ‚schweben‘ Klasse zu sehen, auf das span-Element hinzugefügt, wenn ich mein simuliert ein Mouseover-Ereignis zu bewegen. Es passiert jedoch nichts. Wenn ich die Variable $ tag nach dem Hinzufügen der Hover-Klasse in die Konsole drucke, wird sie in der Konsolenausgabe korrekt angezeigt.
Ich vermute, das hat etwas mit variablen Bereich zu tun, aber ich bin verloren versucht, eine Lösung zu erarbeiten.
als eine Seite, brauchen Sie nicht 'document.createElement'; '$ this.wrap (" ")' ... – HackedByChinese
Ich habe irgendwo gelesen, dass $ (document.createElement()) schneller ist als (''). Ich kann den Link gerade nicht finden ... – Kevin