【问题标题】:jquery buttonset add class to checked element labeljquery buttonset 将类添加到选中的元素标签
【发布时间】:2011-10-30 07:06:55
【问题描述】:

我遇到了一个不确定如何解决的问题。根据我使用 firefox 和简单控制台日志进行的调试,我做得正确。当我选择每个按钮时,我可以看到所选单选按钮切换的指定 div id。但是,当使用 addClass() 函数时,指定的类不会应用于选中的单选按钮的选定 div id。嗖嗖嗖嗖的。

<script type="text/javascript">
 var $j = jQuery.noConflict();
 $j(document).ready(function(){
  $j('#div :radio').buttonset().click(function(){
   $j(this).find(':checked').attr('id').addClass('');
   $j(this).find(':checked').attr('id').addClass('checked');
  });
 });
</script>

<style>
 .checked{background:url(icon.png) left no-repeat;}
</style>

<div id="div">
 <p><input type="radio" id="radio-1" name="radio" value="radio-1" /><label for="radio-1">Radio-1</label></p>
 <p><input type="radio" id="radio-2" name="radio" value="radio-2" /><label for="radio-2">Radio-2</label></p>
 <p><input type="radio" id="radio-3" name="radio" value="radio-3" /><label for="radio-3">Radio-3</label></p>
</div>

【问题讨论】:

    标签: jquery class label radio


    【解决方案1】:

    .attr() 返回一个字符串,您的代码在该字符串上调用.addClass()。应该很明显,这是行不通的。您不想将类添加到 ID — 实际上您不能,因为没有 String.addClass 方法。

    试试这个:

    $j('#div').delegate('input[type="radio"]', 'change', function ()
    {
        $j(this).parent().toggleClass('checked', this.checked);
    });
    

    编辑

    这更像您正在寻找的吗? http://jsfiddle.net/mattball/ACREd/

    【讨论】:

    • 我很确定他说的是收音机旁边的标签(根据问题的标题),但我可能错了。
    • 我不清楚您实际上想要将类添加到哪个元素,所以我猜测并将其添加到检查输入的父级&lt;p&gt;。 (cc @karim)
    • 如果你问我,猜谜游戏占了 SO 的一半乐趣。
    • 如果你所说的“有趣”是指“我在看一个问题时感到很恼火,说‘我知道如何回答这个问题,但尝试与 OP 沟通’并采​​取行动是不值得的挫折on" ...然后是的:P
    • 我从未使用过委托功能,也不知道它的存在。感谢 .attr('id') 返回字符串的提示。我知道,只是暂时不用遍历 dom。现在您的解决方案有效,但是它替换了当前分配的类,我如何附加到现有类?这是我从未做过的另一件事。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-11-06
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2011-11-23
    • 2012-10-16
    相关资源
    最近更新 更多