题
我想实现在JQuery的一组资料核实的HTML单选按钮的行为。我想从所有元素中删除“设置”级然后使用addClass()来重新设置被点击的(一个)元素:
$(".button").each(function() {
$(this).click(function(){
// what goes here to call removeClass() on *all* the elements?
$(this).addClass("set");
});
});
我要打电话removeClass()上的所有元素 - ( “按钮 ”)在这种情况下$,但我不能引用$明确
(“ 按钮”)。我不能只是调用$(“按钮‘)。removeClass(’设置”)外循环,因为这是一个更大的程序的一部分,并且各()循环内的行为可以通过其它参数进行修改。
是否有任何方式从内部访问完整集合的元素,或者在将它们作为变量?还是有另一种方式来解决这个问题呢?
解决方案
您可能会寻找新的选择功能,因为你是一个插件:
jQuery.fn.test = function() {
console.log(this.selector); // .button
};
$('.button').test();
其他提示
如果你不能硬编码在你的内部函数选择,jQuery的其实可以返回用作原始呼叫选择的字符串。请参阅 $( 'BLA')。选择器
此已被添加仅在较新的版本虽然。
这似乎是不必要的复杂性,它可以帮助得到的东西,你最终想达到更清晰的画面。
在你的循环中,您可以获取任何你使用jQuery $(“格”)喜欢//循环内
您说:“但我不能引用$(”按钮“)明确。”为什么呢?
$(".button").each(function() {
$(this).click(function(){
$('.button').removeClass('set'); // this should do it
$(this).addClass("set");
});
});
只是改变:
$(".button").each(function() {
$(this).click(function(){
$('.button').removeClass("set");
$(this).addClass("set");
});
});
我不明白为什么这将是一个问题,有点慢不必拉每次.button,但像你想这是包含在一个循环的唯一办法。
不过不知道为什么你不能引用$(“按钮”)从内部功能,但你可以捕捉在自由变量的引用呢?
var buttons = $(".button");
buttons.each(function() {
$(this).click(function(){
// what goes here to call removeClass() on *all* the elements?
buttons.removeClass('set');
$(this).addClass("set");
});
});
我回答在正文中提出这样的问题:如果你想设置类的每一个的其他的元素,这是一个兄弟姐妹,用兄弟姐妹
你想要的是兄弟姐妹,并且不使用各设置点击事件任
$(".button").click(function() {
$(this).addClass('set');
$(this).siblings('.button').removeClass('set');
});
请参阅了本例的上述动作:
不隶属于 StackOverflow