wake-up-neo.net

jQuery Live-Schwebeflug

Ich verwende den folgenden JQuery-Code, um eine kontextbezogene Löschschaltfläche nur für Tabellenzeilen anzuzeigen, über denen wir mit der Maus schweben. Dies funktioniert aber nicht für Zeilen, die mit js/ajax on the fly hinzugefügt wurden ...

Gibt es eine Möglichkeit, diese Arbeit mit Live-Events zu machen?

$("table tr").hover(
  function () {},
  function () {}
);
162
Jorre

jQuery 1.4.1 unterstützt jetzt "Hover" für live () -Ereignisse, jedoch nur mit einer Event-Handler-Funktion:

$("table tr").live("hover",

function () {

});

Alternativ können Sie zwei Funktionen bereitstellen, eine für mouseenter und eine für mouseleave:

$("table tr").live({
    mouseenter: function () {

    },
    mouseleave: function () {

    }
});
245
$('.hoverme').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});

http://api.jquery.com/live/

110
dmitko

.live() ist seit jQuery 1.7 veraltet

Verwenden Sie stattdessen .on() und geben Sie einen Nachkommen-Selektor an

http://api.jquery.com/on/

$("table").on({
  mouseenter: function(){
    $(this).addClass("inside");
  },
  mouseleave: function(){
    $(this).removeClass("inside");
  }
}, "tr");  // descendant selector
59
Andre

Dieser Code funktioniert:

    $(".ui-button-text").live(
        'hover',
        function (ev) {
            if (ev.type == 'mouseover') {
                $(this).addClass("ui-state-hover");
            }

            if (ev.type == 'mouseout') {
                $(this).removeClass("ui-state-hover");
            }
        });
5

Ab jQuery 1.4.1 funktioniert das Hover-Ereignis mit live(). Es ist im Grunde genommen nur an die Ereignisse mouseenter und mouseleave gebunden, was Sie auch mit Versionen vor 1.4.1 tun können:

$("table tr")
    .mouseenter(function() {
        // Hover starts
    })
    .mouseleave(function() {
        // Hover ends
    });

Dies erfordert zwei Bindungen, funktioniert aber genauso gut.

5
Tatu Ulmanen

WARNUNG: Mit der Live-Version von Hover ist ein erheblicher Leistungsverlust verbunden. Dies macht sich besonders auf einer großen Seite im IE8 bemerkbar.

Ich arbeite an einem Projekt, in dem wir mehrstufige Menüs mit AJAX (wir haben unsere Gründe :) laden. Wie auch immer, ich habe die Live-Methode für den Schwebeflug verwendet, die hervorragend funktioniert hat Chrome (IE9 war in Ordnung, aber nicht großartig). In IE8 verlangsamte es jedoch nicht nur die Menüs (Sie mussten ein paar Sekunden schweben, bevor es abfiel), sondern alles auf der Seite war schmerzhaft langsam , einschließlich Scrollen und sogar Aktivieren einfacher Kontrollkästchen.

Das Binden der Ereignisse direkt nach dem Laden führte zu einer angemessenen Leistung.

2
Brian