2015-04-17 11 views
1

Как изменить цвет фона только на те строки, которые нажали, в приведенном ниже коде он не очищает цвет фона, который был выбран в предыдущей строке.Установить текущий цвет фона колокола

var tr = $('#webgrid_id').find('tr'); 
    tr.bind('click', function (event) { 
     $("tr").click(function() { $(this).css('background', 'yellow'); }); 
}); 

enter image description here

+1

сохранить переменную строку, которая щелкнули. В новом клике очистите строку, которая хранится в переменной, а затем замените переменную новой строкой –

+0

Спасибо всем, и я могу выбрать только один ответ, и я хотел бы сделать несколько ответов на выбор, все ответы GREAT :) –

ответ

6

Demo

You может упростить его, используя класс

.yellow{ 
    background: yellow; 
} 

Добавьте выше <style> или CSS файл


$('#webgrid_id').on('click','tr',function() { 
    $('tr.yellow').removeClass('yellow'); 
    $(this).addClass('yellow'); 
}); 

или как @A. Wolff предлагает передать этот (более оптимизированный и улучшенный): http://jsfiddle.net/12mze843/1/

Кроме того, я вижу click событие внутри безвыходном - нет необходимости гнездования этих событий.

+0

у вас есть проверил ваш код? поэтому, когда вы нажимаете на строку, она получает желтый фон, и когда я нажимаю на другую строку, предыдущая строка не очищается –

+1

* YES *. Проверьте это http://jsfiddle.net/12mze843/ –

+0

. Вы могли бы использовать 'toggleClass()', например: http://jsfiddle.net/12mze843/1/ –

1

попытка ниже кода

var tr = $('#webgrid_id').find('tr'); 
 

 
    tr.bind('click', function (event) { 
 
     tr.css('background',''); 
 
     $("tr").click(function() { 
 
     $(this).css('background', 'yellow'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table id="webgrid_id"> 
 
    <tbody> 
 
    <tr> 
 
     <td>a</td> 
 
    </tr> 
 
    <tr> 
 
     <td>b</td> 
 
    </tr> 
 
    <tr> 
 
     <td>c</td> 
 
    </tr> 
 
    </tbody> 
 

 
</table>

1

Вы могли бы сохранить предыдущую нажатую строку в переменной и изменить его обратно цвет старого цвета, когда другой ряд щелкают, как это:

var prevTr = null; 
var tr = $('#webgrid_id').find('tr'); 
prevTr = tr; 
tr.bind('click', function (event) { 
    $("tr").click(function() { 
    $(this).css('background', 'yellow'); 
    $(prevTr).css('background', 'white'); 
    }); 
}); 
1

Просто дайте класс к нему и изменить этот класс, если нажав

$("head").append("<style type='text/css'>.inYellow{background-color:yellow;}</style>"); 

$("tr").on("click", function(){ 
    $(this).toggleClass("inYellow"); 
}); 

Live example.

3

var tr = $('#webgrid_id').find('tr'); 
 
tr.bind('click', function(event) { 
 
    $(this).css('background', 'yellow') 
 
    .siblings("tr").css('background', '#fff'); 
 
});
tr td { 
 
    font-size: 48px; 
 
    width: 200px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<table id="webgrid_id"> 
 
    <tbody> 
 
    <tr> 
 
     <td>a</td> 
 
    </tr> 
 
    <tr> 
 
     <td>b</td> 
 
    </tr> 
 
    <tr> 
 
     <td>c</td> 
 
    </tr> 
 
    </tbody> 
 

 
</table>

1

Вот демо: https://jsfiddle.net/erkaner/4mf61j5s/1/

$('body').on('click', 'tr', function (event) { 
     $('#webgrid_id tr').removeClass('clickedrow');//clear all highlights 
     $(this).toggleClass('clickedrow'); 
}); 

И вам нужно иметь этот стиль:

<style> 
    .clickedrow {background-color:yellow;} 
</style> 
Смежные вопросы