JQuery:访问每个内部的原始jquery对象

时间:2009-05-22 18:51:12

标签: jquery each

我正在尝试在JQuery中的一组DIV上实现HTML单选按钮行为。我想从所有元素中删除“set”类,然后使用addClass()重新设置单击的(一个)元素:

$(".button").each(function() {
  $(this).click(function(){
    // what goes here to call removeClass() on *all* the elements?
    $(this).addClass("set");
  });
});

我想在所有元素上调用removeClass() - 在本例中为$(“。button”),但我不能明确地引用$(“。button”)。

我不能在循环外调用$(“。button”)。removeClass(“set”),因为这是更大程序的一部分,而且每个()循环内部的行为可以被其他参数修改。

有没有办法从内部访问完整的元素集,或者将它们作为变量传递?或者还有另一种解决问题的方法吗?

7 个答案:

答案 0 :(得分:3)

您可能正在寻找新的selector功能,因为您正在制作插件:

jQuery.fn.test = function() {
    console.log(this.selector); // .button
};

$('.button').test();

答案 1 :(得分:2)

如果你不能在内部函数中硬编码选择器,jQuery实际上可以返回在原始调用中用作选择器的字符串。见$('.bla').selector

这只是在新版本中添加的。

答案 2 :(得分:0)

这似乎是不必要的复杂,它可能有助于更清楚地了解你最终想要实现的目标。

在你的循环中,你可以使用jquery $(“div”)//在循环中获取你喜欢的任何东西

答案 3 :(得分:0)

你说“但我不能明确地引用$(”。button“)。”那是为什么?

$(".button").each(function() {
  $(this).click(function(){
    $('.button').removeClass('set'); // this should do it
    $(this).addClass("set");
  });
});

答案 4 :(得分:0)

只是改变:

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

我不明白为什么那会是一个问题,每次拉动.button有点慢,但这是你想要的循环中包含的唯一方法。

答案 5 :(得分:0)

我回答了正文中提到的问题:如果你想设置每个 其他 元素的类,那就是兄弟姐妹。

Interesting because this is in the roadmap under radioClass()

您想要的是siblings,并且不要使用每个来设置点击事件。

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

请参阅此示例以了解上述操作:

http://jsbin.com/ewiqe

答案 6 :(得分:0)

仍然不确定为什么你不能从内部函数引用$('。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");
  });
});