2010-12-28 16 views
2

mich Ihnen eine Demo Lassen Sie zeigen: herejQuery - OnClick, ändern Hintergrundfarbe für die Tabellenzellen

es ist nur für Reihen arbeiten. es funktioniert nicht für Zellen. Ich möchte die Hintergrundfarben von Zellen (tds) mit Mausklicks ändern.

Zum Beispiel: a haben eine Tabelle, und es hat 4 tds. Die Hintergrundfarbe der Tabelle ist weiß. wenn ich auf einen td klicke, sollte ein td rot sein, als wenn ich auf b klicke, b td sollte rot sein und ein td sollte wieder weiß sein. Wenn ich auf c klicke, sollte c rot sein und b sollte jetzt weiß sein.

A - B

C - D

Antwort

3

Versuchen Sie, die JavaScript Aktualisierung auf:

$(function() { 
    $('td').click(function() { 
    $(this).parents('table').find('td').each(function(index, element) { 
     $(element).removeClass('on'); 
    }); 
    $(this).addClass('on'); 
    }); 
}); 

Preview

+1

omg, wie eine perfekte und schnelle Antwort. Diese Antwort hat mir sehr geholfen. Danke. – andrew

+0

-1 Ich bezweifle, er will JEDEN td auf Klick binden ... das würde jeden td binden. Außerdem bindet es keine nach dem Rendern erstellten TDs. Sie sollten .live verwenden, wenn Sie wirklich etwas binden möchten – sethvargo

+0

Seth: Ich habe gerade etwas aktualisiert, was schon da war. Die Person, die die Frage gestellt hat, hat nie gesagt, dass es eine Möglichkeit geben wird, dass zukünftige 'td's erzeugt werden oder dass nur ein' table'''s 'td' beeinflusst wird. –

0

HTML: eine Klasse der Tabelle hinzufügen:

<table class="color_changing">...</table> 

jQuery:

$('table.color_changing tr td').live('click', function(){ 
    $(this).parent().parent().each('td', function(){ 
    $(this).removeClass('red'); 
    }); 

    $(this).addClass('red'); 
}); 

sollte funktionieren!

0

Wie wäre es, wenn Sie dies tun?

<script>$(function(){ 
    $("td").click(function(){ 
    $(this).addClass("on").siblings().removeClass("on"); 
    }); 
});</script> 

Es wird den gleichen Effekt mit den anderen TD-Zellen in der gleichen Zeile. Oder willst du, dass eine Zelle aufleuchtet, um alle anderen Zellen auf dem Tisch auszuschalten, egal in welcher Reihe?

1

Anstatt die Zeile mit:

$(this).addClass("on").parent().siblings("tr").find("td").removeClass("on"); 

Sie konnte es einfach speichern, die die farbige Zelle ist und die Klasse entfernen, ohne, wie diese suchen zu müssen:

var light = null; 
$(function(){ 
    $("td").click(function(){ 
    if(light) { light.removeClass("on"); } 
    light = $(this); 
    light.addClass("on"); 
    }); 
}); 
Verwandte Themen