将jQuery选择器与'this'结合起来

时间:2012-08-16 00:49:47

标签: javascript jquery jquery-selectors

我在组合这两个特定的选择器时遇到了一些麻烦,而我对简单的选择器没有同样的问题。

这是我通常使用的(组合.btn和.toggle):

$(".btn, .toggle").removeClass("on");

这些是我无法合并的两个(试图将它与#toggle + id attr结合起来):

$(this).addClass("on");
$("#toggle" + $(this).attr("id")).addClass("on");

要清楚,我正在尝试将上述2个选择器组合起来,因为它们做同样的事情(添加类),这是完整的代码。

$(".btn").click(function() {
    $(".btn, .toggle").removeClass("on"); 
    $(this).addClass("on");
    $("#toggle" + $(this).attr("id")).addClass("on");
})

而我正在尝试的是,这不起作用:

$(this, "#toggle" + $(this).attr("id")).addClass("on");

我需要采取特殊方式吗?感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用.add()向集合中添加元素:

$(this).add($("#toggle" + $(this).attr("id"))).addClass("on");

或者以更易读的方式:

var toggleId = "#toggle" + $(this).attr("id");
var $toggleElem = $(toggleId);
$toggleElem.add(this).addClass('on');

请注意,在此示例中,变量$toggleElem本身未被修改,它仍然只包含一个元素。

答案 1 :(得分:2)

我认为您需要, #

 $("#toggle, #" + $(this).attr("id")).addClass("on");
 //        ^ change here
相关问题