【问题标题】:jQuery: perform specific action on radio button selectionjQuery:对单选按钮选择执行特定操作
【发布时间】:2014-05-09 09:46:10
【问题描述】:

我有几个来自 bootstrap 的单选按钮,如下所示。

<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary">
 <input type="radio" name="options" id="option1"> Option 1
</label>
<label class="btn btn-primary">
 <input type="radio" name="options" id="option2"> Option 2
</label>
<label class="btn btn-primary">
 <input type="radio" name="options" id="option3"> Option 3
</label>
</div>

如何为 jQuery 中的每个单选按钮执行特定操作?

例如:

如果选项 1 被选中 -> 加载“html1.html”
如果选项 2 被选中 -> 加载“html2.html”

我使用此代码在特定 div 中加载 html 代码:

<script>
   $(document).ready(function(){ 
       $('#main-content').load('skill-temp.html');
   });
</script>

【问题讨论】:

  • 那个标题闻起来不对 ;)

标签: jquery html twitter-bootstrap radio-button


【解决方案1】:

你可以这样做:

$('input[name="options"]').change(function() {
    var num = this.id.match(/\d+$/);
    $('#main-content').load('html'+num+'.html');
});

【讨论】:

  • 我不得不写一个 jsfiddle 来说服自己改变不是由点击的收音机和之前检查的收音机触发的
【解决方案2】:

我相信最简单的方法是在您的输入中添加一个数据属性,以指导 jQuery 加载操作。比如:

 <input class="loadhtml" data-html="page1" type="radio" name="options" id="option1">
 <input class="loadhtml" data-html="page2" type="radio" name="options" id="option2">
 <input class="loadhtml" data-html="page3" type="radio" name="options" id="option2">

然后

 <script>
 $('input.loadhtml').on('change', function(){
    var data = $(this).data('html');
    $('#main-content').load(data + '.html');
 });
 </script>

编辑

A fiddle,唯一的区别是我通过了 alert(data) 而不是调用 load

【讨论】:

  • 我已将您的属性添加到&lt;input&gt;,但代码不起作用!
  • 它确实有效,检查这个小提琴jsfiddle.net/VAtw6/2 我只是使用警报来检查传递的值而不是加载。也许您忘记/输入中有不同的类?
  • 我正在使用引导单选按钮!这有什么区别吗? getbootstrap.com/javascript
  • 我刚刚添加了一个类来指定函数应该在哪些输入中运行。如果你有所有输入,比方说,一个
    那么你会将 $('input.loadhtml') 更改为 $('.myinputwrapper input') 并且该函数将在所有输入中运行孩子这个元素。您在 html 中的那些(类)很可能也在其他地方使用,因此您必须使其更加具体
【解决方案3】:

我找到了Answer

$(document).on('change', 'input:radio[class^="loadhtml"]', function (event) {
 var data = $(this).data('html');
$('#main-content').load(data + '.html');
});

为每个单选按钮添加 class="loadhtml"

<div id="nav" class="btn-group btn-group-vertical" data-toggle="buttons">
<label class="btn btn-primary">
    <input class="loadhtml" type="radio" data-html="Skills" name="options"><span class="fa fa-lock"></span> About
</label>
<label class="btn btn-primary">
    <input class="loadhtml" type="radio" name="options"><span class="fa fa-unlock"></span> Skills
</label>
<label class="btn btn-primary">
    <input class="loadhtml" type="radio" name="options"><span class="fa fa-unlock"></span> Education
</label>
<label class="btn btn-primary">
    <input class="loadhtml" type="radio" name="options"><span class="fa fa-unlock"></span> Timeline
</label>
<label class="btn btn-primary">
    <input class="loadhtml" type="radio" name="options"><span class="fa fa-unlock"></span> Hobbies</label>

【讨论】:

  • 或者只是$(document).on('change', '.loadhtml', function(),或者如果无线电总是在那里并且没有在.load过程中加载,$(".loadhtml").on('change', function()
【解决方案4】:
$('input:radio[name="options"]').change(
        function(){

            var id =this.id;
            if ( id  == 'option1') {
               // call html page 1
            }
             else if( id  == 'option2'){
              // call html page 2

             }    

        });

【讨论】:

  • 非常不雅。并且不需要检查 ":checked" 因为只有在点击收音机时才会触发更改
猜你喜欢
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多