jQuery:onclick,从true变为false

时间:2010-11-01 16:20:07

标签: jquery

我现在有这个:

$('#markAll').live('click', function () {
checkAll(true, $('.cbPick'));
$('#markAll').text("");
$('#markAll').prepend("<strong>Unmark all</strong>");
});

当我按#markAll时,它会用.cbPick标记每个复选框,然后将文本从(之前的“全部标记”)更改为“取消标记alL”。现在如果你再次按下“unmark all”就没有任何反应。我希望如果你点击“全部取消标记”,它应该这样做:

checkAll(false, $('.cbPick'));

我该怎么做?

2 个答案:

答案 0 :(得分:2)

var marked = false;
$('#markAll').live('click', function () {
    marked = (marked)? false: true;
    checkAll(marked, $('.cbPick'));
    $('#markAll').text("");
    $('#markAll').prepend("<strong>Unmark all</strong>");
});

答案 1 :(得分:1)

您可以尝试以下内容:

$('#markAll').live('click', function () {
    checkAll(true, $('.cbPick'));
    $('#markAll').text("");
    var unmarkAll = $('<strong>Unmark all</strong>');
    unmarkall.click(function(){ checkAll(false, $('.cbPick')); });
    $('#markAll').prepend(unmarkall);
});

这只是创建一个新的'Unmark all'作为jquery对象,并在将它添加到markall对象之前添加一个click函数。

这可能仍然会导致问题,因为markall事件和unmarkall事件会同时触发,因为unmarkall对象被预先放在markall对象中。您最好使用.before函数而不是.prepend。然后隐藏markall链接。