JQuery флажок с ли - PullRequest
       18

JQuery флажок с ли

3 голосов
/ 31 октября 2010

У меня есть ряд флажков, и все работает, за исключением того, что их поведение по умолчанию было изменено непреднамеренно, поэтому я больше не могу их проверять, что странно, поскольку я использовал этот бит jquery, чтобы выделить li вокруг них, когда они получил проверку в первую очередь.

Есть идеи?

//Tag cloud
$(".tag-cloud li").toggle(
  function () {
    //$(this).filter(":checkbox").attr('checked', 'true');
    $(this).addClass("selected");
    return;
    //return $(this).filter(":checkbox").attr("checked", true);
  },
  function () {
    //$(this).filter(":checkbox").attr('checked', 'false');
    $(this).removeClass("selected");
    return;
    //$("#sortable").submit();
  }
);

Ответы [ 2 ]

8 голосов
/ 31 октября 2010

Вы можете упростить его в целом и, надеюсь, устранить нечетное поведение, используя простой обработчик событий .click(), например:

$(".tag-cloud li").click(function() {
 var cb = $(this).find(":checkbox")[0];
 $(this).toggleClass("selected", cb.checked);
});

Это дает преимущество работы независимо от того, в каком состоянии оно изначально находилось, где .toggle() будет отключено для предварительно отмеченных флажков.

Если вы хотите, чтобы сам по себе <li> был кликабельным, мы должны быть уверены, что не запустим цикл и не поменяем местами переключатели при нажатии на сам флажок (если он открыт), например:

$(".tag-cloud li").click(function(e) {
 var cb = $(this).find(":checkbox")[0];
 //if the click wasn't from the checkbox already, toggle it
 if(e.target != cb) cb.checked = !cb.checked;
 $(this).toggleClass("selected", cb.checked);
});
0 голосов
/ 31 октября 2010

Попробуйте удалить строки return;.

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