在JSFiddle上查看:http://jsfiddle.net/Mm79v/
我的JQuery
$(".SupOrSubButton").click(function(e) {
var child = $(this).children().attr('id');
if (child == 'Superscript') {
if ($(this).hasClass('ButtonActive')) {
$(this).removeClass('ButtonActive');
} else {
$('#Subscript').parent().removeClass('ButtonActive');
$(this).toggleClass('ButtonActive');
}
} else if (child == 'Subscript') {
if ($(this).hasClass('ButtonActive')) {
$(this).removeClass('ButtonActive');
} else {
$('#Superscript').parent().removeClass('ButtonActive');
$(this).toggleClass('ButtonActive');
}
};
});
我很想知道是否有更好的方法来完成我上面使用JQuery所做的事情,因为我需要在将来某个地方实现类似的功能。我还在学习JQuery,我知道这有用,但这是最好的方式,还是一种好方法?
最好的问候
添
答案 0 :(得分:0)
您的代码运行正常,但如果您想缩短代码,可以试试这个:
$(".SupOrSubButton").click(function(e) {
var child = $(this).children().attr('id');
$(this).toggleClass('ButtonActive');
$(".SupOrSubButton:not(:has(#" + child +"))").removeClass('ButtonActive');
});
基本上作为您的代码,它会添加ButtonActive
类(如果不存在),如果存在则将其删除。并且还会从未点击的ButtonActive
div中删除.SupOrSubButton
...
编辑:
详细说明:
$(".SupOrSubButton:not(:has(#" + child +"))").removeClass('ButtonActive');`
这段代码有3个部分,第一部分选择与.SupOrSubButton
类匹配的元素,&第二个(:not()
)否定第三个(:has()
),它在原始选择器中查找与child
id匹配的元素。
基本上,选择器作为一个整体意味着“寻找具有某些类的元素,这些元素没有特定的id作为孩子”
答案 1 :(得分:0)
这会完成你想要做的事吗?
$(".group-1 .SupOrSubButton div").click(function (e) {
$(".group-1 div").removeClass('ButtonActive');
$(this).parent().addClass('ButtonActive');
});