【问题标题】:jQuery .show() and .hide() for cloned radio buttons用于克隆单选按钮的 jQuery .show() 和 .hide()
【发布时间】:2015-08-13 05:17:25
【问题描述】:

我有一系列克隆的单选按钮。我想做一件简单的事情,如果选择了相关的收音机,则显示一个特定的 div,如果没有,则隐藏。这是 jQuery 函数:

$clone.find('[id^="mov"]').each(function(){
    $(this).click(function(){
            $clone.find('[id^="l"]').each(function(){
            if ($(this).is(":checked")){
                $clone.find('[id^="linear"]').each(function(){
                $(this).show();
                });
            } 
            });
            $clone.find('[id^="c"]').each(function(){
            if ($(this).is(":checked")){
                $clone.find('[id^="circular"]').each(function(){
                $(this).show();
                });
            } 
            });
            $clone.find('[id^="r"]').each(function(){
            if ($(this).is(":checked")){
                $clone.find('[id^="rotacional"]').each(function(){
                $(this).show();
                });
            } 
            });
            $clone.find('[id^="m"]').each(function(){
            if ($(this).is(":checked")){
                $clone.find('[id^="mudanca_config_mao"]').each(function(){
                $(this).show();
                });
            }
            }); 
    });
});

我设法显示了我想要的 div,但我似乎无法隐藏它们。当我为 else 做同样的事情时,它不起作用并停止显示 div。

if ($(this).is(":checked")){
    $clone.find('[id^="linear"]').each(function(){
    $(this).show();
    });
}
else {
    $clone.find('[id^="linear"]').each(function(){
    $(this).hide();
    });
}

另外,我知道这个功能有点重复和混乱,所以如果有人有更好更干净的方法,我愿意接受建议。我是 jQuery 新手,还在学习 :) 非常感谢!

【问题讨论】:

  • 显示相关的html。不清楚脚本中的内容是什么
  • 嘿 Dominique - JSFiddle 会有所帮助,因为这有点难读。
  • 你不需要这么多使用each()clickshowhide 等方法对 jQuery 集合非常有效。

标签: javascript jquery radio-button


【解决方案1】:

如果不查看您的 html,很难看出问题所在。不过,你的 JavaScript 肯定是可以整理的。以下内容应该等同于您问题中的 JavaScript。

$clone.find('[id^="mov"]').on('click', function(){
    $clone.find('[id^="linear"]').toggle(
        $clone.find('[id^="l"]').is(':checked'));
    $clone.find('[id^="circular"]').toggle(
        $clone.find('[id^="c"]').is(':checked'));
    $clone.find('[id^="rotacional"]').toggle(
        $clone.find('[id^="r"]').is(':checked'));
    $clone.find('[id^="mudanca_config_mao"]').toggle(
        $clone.find('[id^="m"]').is(':checked'));
});

【讨论】:

  • 谢谢!!这正是我想要做的,这是一种清理代码的好方法!很高兴知道如果 .each() :) 我不必使用数千个
猜你喜欢
  • 1970-01-01
  • 2012-04-18
  • 2017-04-30
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多