我的页面上有4个div和一个按钮。如果你单击一个div,它就会切换到。
单击按钮,我希望突出显示的所有div都保持高亮显示,但是在单击按钮后我不希望更多div到toggleClass。
有办法做到这一点吗?
我的代码是这样的:
function submit() {
//this is the function I do not know how to define
};
function choose() {
$('.options').click(function() {
$(this).toggleClass('highlighted');
});
return;
};
$(document).ready(function() {
$('body').append('<div class="options">option1</div>');
$('body').append('<div class="options">option2</div>');
$('body').append('<div class="options">option3</div>');
$('body').append('<div class="options">option4</div>');
$('body').append('<button onclick=submit()>Submit</button>');
choose();
});
我一直在寻找一种方法来停止choose()函数。创建变量goOn并在按钮点击时将其值更改为false,加上下面的代码位没有帮助。
var goOn = true;
while (goOn) {
choose();
};
答案 0 :(得分:3)
答案 1 :(得分:0)
如果希望仅调用绑定事件处理程序一次,请使用.one方法。 E.g。
$('.options').one( "click", function() {
$(this).toggleClass('highlighted');
});
答案 2 :(得分:0)
你可以unbind事件监听器(这与旧的和最新版本的jQuery兼容):
function choose() {
$('.options').click(function () {
$(this).toggleClass('highlighted');
});
return;
};
choose();
$('button').click(function () {
$('.options').unbind('click');
});
答案 3 :(得分:0)
function choose() {
$('.options').click(function() {
$(this).toggleClass('highlighted');
if ($('.options').length == $('.highlighted').length)
{
$('.options').off('click');
}
});
return;};
答案 4 :(得分:0)
布尔值,完整示例:
<强>的javascript / jQuery的:强>
$(document).ready(function() {
ok2toggle = 1;
$('body').append('<div class="options">option1</div>');
$('body').append('<div class="options">option2</div>');
$('body').append('<div class="options">option3</div>');
$('body').append('<div class="options">option4</div>');
$('body').append('<button id="mySubmit">Submit</button>');
choose();
function choose() {
$('.options').click(function() {
if (ok2toggle==1)
$(this).toggleClass('highlighted');
});
return;
};
$('#mySubmit').click(function() {
ok2toggle = 0;
});
}); //END document.ready
或者,将submit sub更改为使用Submit按钮作为切换:
$('#mySubmit').click(function() {
ok2toggle = !ok2toggle;
});
请注意,您的提交按钮中添加了一个ID,并删除了内联javascript(从来不是一个好主意)。