我现在有这个:
$('#markAll').live('click', function () {
checkAll(true, $('.cbPick'));
$('#markAll').text("");
$('#markAll').prepend("<strong>Unmark all</strong>");
});
当我按#markAll时,它会用.cbPick标记每个复选框,然后将文本从(之前的“全部标记”)更改为“取消标记alL”。现在如果你再次按下“unmark all”就没有任何反应。我希望如果你点击“全部取消标记”,它应该这样做:
checkAll(false, $('.cbPick'));
我该怎么做?
答案 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链接。