我正在使用JQuery toggleClass在单击按钮时更改按钮的颜色。当它再次被点击时,它应该恢复为原始颜色。当鼠标点击其他任何地方(包括空白区域)时,它应该恢复为原始颜色。
我无法弄清楚如何做到,但下面是我设法找到并插入内容的两个片段。
以下代码段将在单击按钮时更改颜色,但再次单击时它不会恢复为原始颜色,但单击任何其他元素或空白区域时,按钮颜色将恢复为原始颜色:
(function () {
$('.button_is').click(function(evt) {
evt.stopPropagation(); //stops the document click action
$(this).siblings().removeClass('button_addition');
$(this).toggleClass('button_addition');
});
$(document).click(function() {
$('.button_is').removeClass('button_addition'); //make all inactive
});
});
以下代码片段将在单击该元素时切换类,再次单击该元素时,它将恢复为原始状态,但如果在其他位置单击则不会恢复为原始颜色:
$(document).ready(function () {
$(".button_is").click(function () {
$(this).toggleClass("button_addition");
});
});
我可以利用这两个片段中的哪一个来确保单击按钮时颜色发生变化,再次单击时它会恢复为原始颜色,当点击其他元素或空白区域时,它会恢复为原始颜色?
答案 0 :(得分:2)
你可以试试这个
$(document).ready(function () {
$(".button_is").click(function (e) {
e.stopPropagation();
$(this).toggleClass("button_addition");
});
$(document).click(function() {
$(".button_is.button_addition").trigger("click");
});
});
答案 1 :(得分:1)
试试这个 -
$(document).ready(function () {
$(".button_is").click(function () {
$(this).toggleClass("button_addition");
});
$(document).click(function(event) {
if(!$(event.target).is('.button_is')){
$('.button_is').removeClass('button_addition'); //make all inactive
}
});
});
答案 2 :(得分:1)
小提琴: http://jsfiddle.net/9ZKfq/
$(document).ready(function() {
$(document).click(function(jEvent) {
if (!$(jEvent.target).hasClass('button_is'))
{
$('.button_is').removeClass('button_addition');
}
else
{
$(jEvent.target).toggleClass('button_addition');
}
});
});
答案 3 :(得分:1)
你的第一个剪辑适合我。
也许你的HTML是问题?
值得注意的是,您的代码中存在拼写错误(您在就绪处理程序上缺少$
)。
看看这个:http://jsfiddle.net/URrVf/ 它适用于Chrome,Firefox和IE9。
答案 4 :(得分:1)
试试这个
$(function() {
$('.button_is').on('click',
function(event) {
event.stopPropagation();
$('.button_is').toggleClass('button_addition');
});
$('html').click(function() {
$('.button_is').removeClass('button_addition');
});
});