Javascript 在多个按钮中调用相同的jQuery函数

Javascript 在多个按钮中调用相同的jQuery函数,javascript,jquery,html,Javascript,Jquery,Html,我对jQuery不是很熟悉。我下载了这段代码来创建淡入/淡出弹出表单。代码如下: <script type='text/javascript'> $(document).ready(function() { $('#button').click(function(e) { $('#modal').reveal({ animation: 'fade', animation

我对jQuery不是很熟悉。我下载了这段代码来创建淡入/淡出弹出表单。代码如下:

<script type='text/javascript'>
    $(document).ready(function() {
        $('#button').click(function(e) { 
            $('#modal').reveal({ 
                animation: 'fade',
                animationspeed: 150,
                closeonbackgroundclick: true, 
                dismissmodalclass: 'close'
            });
            return false;
        });
    });
</script>

此php代码将显示5个具有相同id的按钮,即“按钮”。我想做的是,当我单击jQuery函数将执行的5个按钮中的任何一个时,会弹出一个淡入/淡出表单。

第一个解决方案:

function doClick(e) { 
   $('#modal').reveal({ 
     animation: 'fade',
     animationspeed: 150,
     closeonbackgroundclick: true, 
     dismissmodalclass: 'close'
   });
   return false;
}
$('#button1').click(doClick);
$('#button2').click(doClick);
第二种解决方案:

function doClick(e) { 
   $('#modal').reveal({ 
     animation: 'fade',
     animationspeed: 150,
     closeonbackgroundclick: true, 
     dismissmodalclass: 'close'
   });
   return false;
}
$('#button1').click(doClick);
$('#button2').click(doClick);
为所有涉及的按钮指定一个类“someClass”

<input type=button class=someClass ...
第三种解决方案:

function doClick(e) { 
   $('#modal').reveal({ 
     animation: 'fade',
     animationspeed: 150,
     closeonbackgroundclick: true, 
     dismissmodalclass: 'close'
   });
   return false;
}
$('#button1').click(doClick);
$('#button2').click(doClick);
使用逗号分隔ID:

$('#button1, #button2').click(function(e) { 
...
});

通常,最好的解决方案是第二种:它允许您在代码中添加按钮,而无需修改javascript部分。如果动态添加其中一些按钮,您甚至可以这样做

$(document).on('click', '.someClass', function(e) { 
...
});

ID应该是唯一的。试着使用类似于

$('input[type="button"]')

您可以使用
单独的id按类调用它们

$(document).ready(function() {
$('#button, #button1, #button2').click(function(e) { 
$('#modal').reveal({ 
animation: 'fade',
animationspeed: 150,
closeonbackgroundclick: true, 
dismissmodalclass: 'close'
});
return false;
});
});​

$(文档).ready(函数(){
$('按钮1,'按钮2,'按钮3')。单击(函数(e){
$('#模态')。显示({
动画:“淡入淡出”,
动画速度:150,
closeonbackgroundclick:true,
dismissmodalclass:“关闭”
});
返回false;
});
});

或者使用前面提到的类

您可以使用css类名而不是
id
来实现它,如下所示

<script type='text/javascript'>
$(document).ready(function() {
    $('.fade').click(function(e) { 
        $('#modal').reveal({ 
            animation: 'fade',
            animationspeed: 150,
            closeonbackgroundclick: true, 
            dismissmodalclass: 'close'
        });
        return false;
    });
});
</script>

$(文档).ready(函数(){
$('.fade')。单击(函数(e){
$('#模态')。显示({
动画:“淡入淡出”,
动画速度:150,
closeonbackgroundclick:true,
dismissmodalclass:“关闭”
});
返回false;
});
});
还有按钮的html

<button class="fade">Button1</button>
<button class="fade">Button2</button>
<button class="fade">Button3</button>
按钮1
按钮2
按钮3

对按钮使用不同的ID,并按如下所示更改功能

$('按钮1,'按钮2,'按钮3')。单击(函数(e){


如果您对所有按钮使用相同的buttonid,则无需调用所有按钮。只需使用此代码即可。您似乎正在使用此代码中的动画…我们可以使用切换淡入淡出,而不是显示


$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
$(“#buttonid”).fadein();
$(“#buttonid”).fadeout();
});
});


在循环中动态创建唯一buttonid的数组

$button[] = '#'.$buttonid; 
在循环外部,使用
内爆
将此数组转换为逗号分隔的字符串

$jsstring = implode(",",$button);
现在使用php在js代码中将上述字符串作为选择器传递,如下所示:

$(document).ready(function() {
    $('< php echo $jsstring ; ?>').click(function(){ });
});
$(文档).ready(函数(){
$('')。单击(function(){});
});

使用以下代码中更简单的方法:

方法1:


$(文档).ready(函数(){
$('input:button[name=“button1”],[name=“button2”]”。单击(
函数(){
警报(“测试”)
});
});
方法2:


$(文档).ready(函数(){
$('button[id=“button1”],[id=“button2”])。单击(
函数(){
警报('TE222ST')
});
});
bbbbb
bbbbb

我有解决这个问题的办法

      $(document).ready(function () {
                    $("#btnSubmit,#btnSubmitbuttom").click(function () {
                        var rfp = true;
                        var count = 0;
                        var lbxBD_Role = $("#lbxBD_Role option:selected").val();
                        if (lbxBD_Role == "" || lbxBD_Role == undefined) {
                            $("#lblBD_Role").attr("style", "visibility: visible");
                            $("#lblBD_Role").attr("style", "color: red");
                            $("#lblBD_Role").html('* Required');
                            count++;
                        }
                      });
                   });
            </script>
$(文档).ready(函数(){
$(“#btnSubmit,#btnSubmitbuttom”)。单击(函数(){
var=true;
var计数=0;
var lbxBD_Role=$(“#lbxBD_Role option:selected”).val();
if(lbxBD_角色==“”| | lbxBD_角色==未定义){
$(“#lbd_角色”).attr(“样式”,“可见性:可见”);
$(“#lbd_角色”).attr(“样式”,“颜色:红色”);
$(“#lbd_Role”).html(“*必选”);
计数++;
}
});
});

类更适合IMO@RoryMcCrossan只要没有指定ID的容器,我会说它没有多大区别。只是想发布其他答案的替代方案+1关于实现相同内容的不同方法的良好概述。太棒了!太棒了!非常感谢@dystroy,你是个天才。我使用了您的第二个解决方案,效果很好。这应该可以,但我有5个按钮,它们的id与php文件中循环生成的相同。或者是否可以使用数组命名按钮id,如button id='button[0]'?因此,最好使用ClassClass如果class属性提供了多个值,例如class=“class1 class2 class3”等等?谢谢
<script>
    $(document).ready(function () {
        $('input:button[name="button1"],[name="button2"]').click(
            function () {
                alert('test')
            });
    });
</script>
<input type="button" id="button1" name="button1" value="Filter" />
<input type="button" id="button2" name="button2" value="Filter" />
<script>
    $(document).ready(function () {
        $('button[id="button1"],[id="button2"]').click(
            function () {
                alert('te2222st')
            });
    });
</script>
<button id="button1" >bbbbb</button>
<button id="button2" >bbbbb</button>
      $(document).ready(function () {
                    $("#btnSubmit,#btnSubmitbuttom").click(function () {
                        var rfp = true;
                        var count = 0;
                        var lbxBD_Role = $("#lbxBD_Role option:selected").val();
                        if (lbxBD_Role == "" || lbxBD_Role == undefined) {
                            $("#lblBD_Role").attr("style", "visibility: visible");
                            $("#lblBD_Role").attr("style", "color: red");
                            $("#lblBD_Role").html('* Required');
                            count++;
                        }
                      });
                   });
            </script>