我想实现在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");
  });
});

我回答在正文中提出这样的问题:如果你想设置类的每一个其他元素,这是一个兄弟姐妹,用兄弟姐妹

有趣的,因为这是在路线图radioClass下()

你想要的是兄弟姐妹,并且不使用各设置点击事件任

$(".button").click(function() {
  $(this).addClass('set');
  $(this).siblings('.button').removeClass('set');
});

请参阅了本例的上述动作:

http://jsbin.com/ewiqe

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top