2010-12-28 21 views
2

は、私はあなたにデモをお見せしましょう:herejQueryのは - クリック時、テーブルセルの変更背景色を

それが行のみのために働いています。その細胞のために働いていない。私はマウスのクリックで細胞の(tds ')背景色を変更したい。

たとえば、aはテーブルを持ち、それには4つのtdsがあります。テーブルの背景色は白です。私がtdをクリックすると、tdは赤くなり、bをクリックするとbは赤、tdは再び白になるはずです。私がクリックするよりも、cが赤でなければならず、bが白でなければなりません。

A - B

C - D

答えて

3

にはJavaScriptを更新してみてください。

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

Preview

+1

OMG、このような完璧をし、速い答え。この答えは私を助けました。ありがとうございました。 – andrew

+0

-1私は彼がクリックごとにすべてのtdをバインドしたいとは思わない...これはすべてのtdをバインドするだろう。さらに、作成されたtdのAFTERレンダリングにはバインドされません。本当に何かをバインドしたいときは.liveを使うべきです – sethvargo

+0

セス:私はちょうどそこにあったものを少し更新しました。質問をした人は、将来の 'td'が生成されたり、' table''の 'td'だけが影響を受ける可能性があるとは決して言いませんでした。 –

0

HTML:テーブルにクラスを追加します。

<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'); 
}); 

0

どうすればいいですか?

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

同じ行の他のTDセルと同じ効果があります。または、列に関係なく、テーブル上の他のすべてのセルをオフにするセルの点灯をしたいですか?

1

代わりにラインを持つ:

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

あなたは可能性があり色付きセルでちょうど店と、このように、検索しなくクラスを削除します、

var light = null; 
$(function(){ 
    $("td").click(function(){ 
    if(light) { light.removeClass("on"); } 
    light = $(this); 
    light.addClass("on"); 
    }); 
}); 
関連する問題