2009-03-13 11 views
0

Ich habe gerade in der ASP.NET MVC RC2 und damit auch die JQuery 1.3.1-Bibliothek installiert.
Bevor ich die 1.2.6-Bibliothek verwendete.
Unsere Anwendung funktioniert gut unter dieser Bibliothek.
Aber jetzt habe ich seltsames Problem.
Wir haben eine Rasteransicht, die wir mit dem Ergebnis eines AJAX-Aufrufs aufbauen.
Mit dem zurückgegebenen Ergebnis fügen wir neue Zeilen zu einer Tabelle hinzu, indem wir eine versteckte Zeile klonen.
JQuery 1.3.1 findet keine dynamisch generierten Zeilen

Das generierte HTML von der JQuery platziert zusätzliche Parameter zu den Tags. Diese sind in der Form von JQuery12345678 = "null". Sie alle haben den gleichen Namen. In der Kopfzeile der Tabelle befindet sich ein Kontrollkästchen, das alle Zeilen der Tabelle auswählt bzw. deren Auswahl entfernt. Dies durch Iterieren durch die Zeilen der Tabelle.

$("#selectAllCheckbox").click(function() { 
    var checked = this.checked; 
    $("#dgNewTasks tbody tr").find(':input[type="checkbox"]').each(function() { 
     this.checked = checked; 
    }); 
}); 

Jetzt mit der neuen Bibliothek das Kontrollkästchen nicht mehr festgelegt. Ich habe IE Developer Tools verwendet, um das HTML zu überprüfen. Wenn ich den Parameter JQuery12345678 = "null" aus meinen Zeilen entfernen. Es funktioniert gut.

Kann mir jemand sagen, was ich zu tun habe?

+0

Können Sie bitte ein Beispiel für die relevanten HTML-Schnipsel geben? Mozilla Firefox bietet eine JavaScript-Fehlerkonsole. Bitte sehen Sie nach, ob es Fehler/Ausnahmen gibt, indem Sie das Ereignis auslösen. – Mork0075

Antwort

1

Wir müssen Ihr HTML sehen. Das könnte das Problem beleuchten. In der Zwischenzeit können Sie Ihren Code stark vereinfacht werden:

$("#selectAllCheckbox").click(function() { 
    var checked = this.checked; 
    $("#dgNewTasks tbody tr :checkbox").attr("checked", checked); 
}); 
0

dies nicht funktioniert, weil Sie den Event-Handler (zB click()) in der ready() Event-Handler und in diesem Moment befestigen gibt es keine alle dynamisch erstellten Zeilen. Fügen Sie also die click() oder andere Event-Handler an die dynamisch erstellten Zeilen an, nachdem sie erstellt wurden.

0

Es klingt wie Sie die .live statt .click verwenden müssen:

$("#selectAllCheckbox").live(function() { 
    var checked = this.checked; 
    $("#dgNewTasks tbody tr").find(':input[type="checkbox"]').each(function() { 
     this.checked = checked; 
    }); 
}); 
Verwandte Themen