2010-10-27 3 views
0

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

E.g.

Checkbox ID    = 1 
Child Checkbox ID   = 1-1 
Child Checkbox ID    = 1-2 
Grand-child Checkbox ID  = 1-2-1 
Grand-child Checkbox ID  = 1-2-2 

Код я написал до сих пор использует шляпу символ ^, чтобы проверить все галочки, начиная с ID выбранного флажка, например; При нажатии кнопки «1» будет проверяться все поля с идентификатором, начинающимся с 1-. Проверка 1-2 проверяет все флажки, начиная с 1-2.

$("input[type='checkbox']").live('click', function() { 
    var selected = $(this).attr('id').match(/\d+$/); 
    alert(selected); 
    $("input[id^='buCheck_"+selected+"-']").attr('checked','checked'); 
}); 

ответ

1

Как насчет этого?

http://jsfiddle.net/wfMXv/2/

+0

Да это выглядит великолепно. Одна из проблем, которые у меня есть, - это флажок .each on: checkbox, который я предполагаю, будет проходить через каждый флажок на странице? Я беспокоюсь, что у меня есть потенциально сотни ящиков и проблемы с производительностью. – 2010-10-27 18:19:52

+0

Используйте $ (": checkbox [class^= '" + top_name + "']") в качестве селектора для каждого вызова, тогда вам не нужен внутренний оператор if. См. Http://jsfiddle.net/wfMXv/4/. –

0

Вы действительно не объяснить, что ваша проблема. Я предполагаю, что это не работает для под-checkbox.

Это, наверное, проще всего просто перенесите синтаксический разбор ID:

$("input[type='checkbox']").live('click', function() { 
    var selected = $(this).attr('id'); 
    alert(selected); 
    $("input[id^='"+selected+"-']").attr('checked','checked'); 
}); 
Смежные вопросы