Флажок "Найти ребенка" - PullRequest
       6

Флажок "Найти ребенка"

16 голосов
/ 02 февраля 2011

У меня быстрый вопрос jQuery:

У меня есть следующий тип таблицы:

<table id="my_table">
  <tr>
   <td><input type="checkbox" value="24"></td>
   <td> Click Here To Check The Box </td>
   <td> Or Click Here </td>
  </tr>
 </table>

А в jQuery я пытаюсь установить соответствующий флажок в той строке, по которой щелкнули.

 $("#my_table tr").click(function(e) { 
     $(this).closest(":checkbox").attr("checked", checked");
  });

Но вышеупомянутое не работает. Какие-нибудь быстрые идеи по выбору флажка в строке, по которой щелкнули? Спасибо!

Ответы [ 4 ]

31 голосов
/ 02 февраля 2011

РЕДАКТИРОВАТЬ: ЛУЧШЕЕ РЕШЕНИЕ ВНИЗ

Предполагая, что есть только один флажок, я бы прикрепил событие к td вместо tr:

$('#my_table td').click(function(e){
  $(this).parent().find('input:checkbox:first').attr('checked', 'checked');
});

Пример

Если вы также хотите снять флажок ...

$('#my_table td').click(function(e) {
    var $tc = $(this).parent().find('input:checkbox:first'),
        tv = $tc.attr('checked');

    $tc.attr('checked', !tv);
});

Эту функцию необходимо также применить к флажку, чтобы отменить поведение по умолчанию.

Пример 2

РЕДАКТИРОВАТЬ: Наиболее разумным решением является отмена функциональности, если целью является ввод: http://jsfiddle.net/EXVYU/5/

var cbcfn = function(e) {
    if (e.target.tagName.toUpperCase() != "INPUT") {
        var $tc = $(this).parent().find('input:checkbox:first'),
            tv = $tc.attr('checked');
        $tc.attr('checked', !tv);
    }
};

$('#my_table td').live('click', cbcfn);
4 голосов
/ 02 февраля 2011

Метод jQuery closest () находит ближайшего родителя.

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

 $("#my_table tr").click(function(e) { 
     $(":checkbox:eq(0)", this).attr("checked", "checked"); 
  });

в основном вы ищете первый флажок, найденный в строке таблицы

некоторые ссылки

jQuery: eq () селектор

......

0 голосов
/ 02 февраля 2011
$("#my_table tr").click(function(e) {
    state= $(this).find(":checkbox:eq(0)").attr("checked");
    if (state==true){ // WITH TOGGLE
        $(this).find(":checkbox:eq(0)").removeAttr("checked");
    }else {
        $(this).find(":checkbox:eq(0)").attr("checked", "checked");
    }       
});

Я делаю простой скрипт для проверки первого флажка в конкретном tr.о переключении я просто делаю, чтобы попробовать, прежде чем опубликовать этот ответ.

0 голосов
/ 02 февраля 2011

попробуйте тоже ...

 $("#my_table tr").click(function(e) { 
 $(this).closest("type:checkbox").attr("checked", checked");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...