2012-03-14 2 views
0
$j('table#thisOne tr:gt(0)').hover(function() { 
    if ($j(this).next().length != 0) { 
    $j(this).find('td:not(:first-child)').css("background", "#f60").css("cursor", "pointer"); 
    } 
}, function() { 
    $j(this).find('td').css("background", "").css("cursor", "auto"); 
}); 

Этот код работает отлично, то есть парит между строками 2-й и последней последней строкой и вторыми столбцами.Разный обработчик в пределах одного и того же TR click

Следующая обрабатывает событие щелчка для этой таблицы:

$j('body').delegate("#thisOne tr:gt(0)", 'click', function() { 
    //I want to do something if second column onward clicked, but not first column 
    //which is a checkbox for other handler. 
}); 

Если столбец 1 имеет флажок, Как я могу различить, установив флажок и весь ряд. Потому что я хочу иметь другой обработчик между столбцом1 и остальной частью столбца.

TIA.

+0

Если вы хотите разного обработчика в одном и том же случае, вы можете использовать инструкцию if. – viyancs

+0

Найдено решение с 2 событий щелчка '$ J ('тело') делегат. ("# ThisOne тр: GT (0)", 'нажмите', функция() {...})' и '$ j ('body'). delegate (" # thisOne tr: gt (0) td: first-child ", 'click', function (event) {event.stopPropagation();})' Спасибо @ Джош-Leitzel. – Gian

ответ

1

Самый простой способ сделать это - воспользоваться stopPropagation. В основном создайте обработчик tr click, а затем создайте более конкретный для своего первого столбца. Что-то вроде этого:

$('tr').click(function() { 
    // handler1 
}); 

$('tr .col1').click(function(event) { 
    // handler2 
    event.stopPropagation(); // handler1 will not be called now 
}); 
+0

Прекращение распространения - это ключ. Спасибо Джошу. – Gian

Смежные вопросы