2009-07-14 1 views
1

Arbeit habe ich die folgenden in der Jquery-Ready-Funktion läuftLive-Abfrage-Plugin mit der sichtbaren Attributselektor nicht

$('[id$=txtCustomer]:visible').livequery(
     function() { alert('Hello') }, 
     function() { alert('World') } 
    ); 

Ich erhalte eine Benachrichtigung zum ersten Mal sagen ‚Hallo‘, aber die Funktionen werden nicht genannt wenn ich diese Sichtbarkeit der Textbox umschalte.

Bitte helfen.

+0

Vielen Dank für die Formatierung Philippe –

Antwort

3

Die livequery "match/nomatch" Ereignisse funktionieren nicht mit jQuery Pseudoselektoren wie ": visible". Sie funktionieren für Klassenselektoren.

Eine einfache Lösung wäre, auch eine Klasse hinzuzufügen, wenn Sie das Element anzeigen, und eine Klasse zu entfernen, wenn Sie das Element ausblenden.

Zum Beispiel:

(html)

<input type="button" value="toggle"/> 
<div id="item" 
    style="width:100px;height:100px;background-color:#ff0" 
    class="Visible"> 
</div> 

(Skript)

$(function() { 

$("#item.Visible").livequery(
    function() { 
     alert("match"); 
    }, 
    function() { 
     alert("nomatch"); 
    } 
    ); 


    $("input").click(function() { 
     if ($("#item").is(":visible")) 
     $("#item").hide().removeClass("Visible"); 
     else 
     $("#item").show().addClass("Visible"); 
    }); 

}); 

Ein Beweis dafür finden Sie hier: http://jsbin.com/uremo