如何在jQuery中选择除$(this)之外的所有内容?

时间:2014-04-23 09:14:42

标签: javascript jquery css radio-button

$(".dist_radio").click(function() {
        $(this).attr("class", "dist_radio dist_on");
        if (!$(this)) {
            $(".dist_on").attr("class", "dist_radio");
        }


        console.log($(this).attr("class"));
    });

我使用此代码来设置单选按钮的样式,除了我点击另一个按钮,其他按钮不会被dist_on类删除之外,它还有效。你能告诉我它有什么问题吗?

3 个答案:

答案 0 :(得分:4)

您可以使用 .not()

  

从匹配元素集中删除元素。

$(".dist_radio").click(function () {
    $(this).attr("class", "dist_radio dist_on");
    $(".dist_on").not(this).attr("class", "dist_radio");
    console.log($(this).attr("class"));
});

或更好地使用 .addClass() .removeClass() 让您的代码更加清晰:

$(".dist_radio").click(function () {
    $(".dist_radio").removeClass("dist_on");
    $(this).addClass("dist_on");
});

答案 1 :(得分:4)

使用.not方法:

$(".dist_radio").not(this).attr("class", "dist_radio");

但是对于您的逻辑,您可以像下面这样做(使用addClass / removeClass而不是直接更改class属性):

$(".dist_radio").click(function() {
    $(".dist_radio").removeClass('dist_on');
    $(this).addClass('dist_on');
});

答案 2 :(得分:2)

您可以使用.not()功能从所选集中排除元素。将此传递给.not()将排除当前对象。您在此处不需要if来排除它。

 $(".dist_on").not(this).attr("class", "dist_radio");
  

.not()从匹配元素集中删除元素。

您的代码将是

$(".dist_radio").click(function() {
    $(this).attr("class", "dist_radio dist_on");
    $(".dist_on").not(this).attr("class", "dist_radio");
});