манипулирование флажком jQuery - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть список флажков, выглядящих так:

<table>
 <tr><td><input type="checkbox" /> <label>Bla</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Bla Sub 1</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Bla Sub 2</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Bla Sub 3</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Bla Sub 4</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Bla Sub 5</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Bla Sub 6</label></td></tr>
 <tr><td><input type="checkbox" /> <label> Blub</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Blub Sub 1</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Blub Sub 2</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Blub Sub 3</label></td></tr>
 <tr><td><input type="checkbox" /> <label> + Blub Sub 4</label></td></tr>
 <tr><td><input type="checkbox" /> <label> Derp</label></td></tr>
 <tr><td><input type="checkbox" /> <label> etc...</label></td></tr>
</table>

Итак, я хочу включить функцию «выбрать подкатегории» для такого списка. К сожалению, из-за испорченного ID-рендеринга в ASP.NET я не могу вызывать категории по их идентификаторам или именам, поэтому мне придется считывать содержимое каждого узла и снимать / устанавливать все флажки, которые начинаются с +.

Таким образом, если пользователь выбирает Bla, все подсписки + Bla Sub # также должны быть выбраны, и наоборот.

Как это возможно? Я использую jQuery, так что это не должно быть так сложно, но я не совсем понимаю, как проверить содержимое списков ...

Ответы [ 3 ]

1 голос
/ 07 декабря 2009

Это должно работать:

$('ul li:not(:contains("+"))').click(function(
 var current = $(this), check;
 check = (current.attr('checked') ^ true);
 $('ul li:contains("'+current.text()+'") checkbox').attr('checked',check);
}

Я еще не проверял это. Это, безусловно, должно дать вам представление о том, что требуется. Прокомментируйте, если у вас есть какие-либо вопросы.

0 голосов
/ 07 декабря 2009

Это будет сделано, поэтому, когда вы проверите "Bla", все "+ Bla *" будут проверены:

$('label:not(:contains(+))').prev(':checkbox').click(function(){
    var $this = $(this);
    $('label:contains("'+$this.next('label').text()+'")').prev(':checkbox')
    .attr('checked',$this.is(':checked'));
});
0 голосов
/ 07 декабря 2009

Вы можете легко добавить класс к этим флажкам в ASP.net, а затем выполнить итерацию по ним, используя $ ('. ClassName').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...