打开对话框,单击类似名称的多个按钮

时间:2013-06-12 11:08:38

标签: jquery html cakephp-1.3

我必须 jquery 来显示对话框,但是有一个问题,我有多个类似名称的按钮,例如:btnEditUser-1,btnEditUser-2,btnEditUser-3

我必须为每个按钮调用相同的函数来调用AJAX函数。

请建议我该怎么做?

请查找html / javascript代码以供参考:

用于打印HTML的cakephp代码

if($user['id']=="1" or ((strtotime(date("Y-m-d"))-strtotime($searchres[$i]['documents']['uploadtime']))<172800))
    {

    echo $this->Form->button('Edit User', array('type'=>'button','id'=>'edituser-'.$id,'name'=>'edituser-'.$id,'value'=>$id));
}

我必须在jquery中编写以下函数,它接收按钮发送的值(如上所述):

function showedituser(doc_id) {
        var data = {doc_id : doc_id};
        var divname = $('#dialog-edituser');
        $("#dialog-markup").dialog("open");
        var url = 'documents/getassigned_users';
        callajax(url, data, divname);
        return false;
   }

1 个答案:

答案 0 :(得分:2)

为所有这些按钮添加一个公共类。例如:

<input type="button" id="btnEditUser-1" class="btnEditUser" >
<input type="button" id="btnEditUser-2" class="btnEditUser" >
.......................
<input type="button" id="btnEditUser-n" class="btnEditUser" >

然后为所有这些添加点击处理程序(例如,使用jQuery):

$('.btnEditUser').on('click', function(event){
    //If you're in a form you may want to prevent the default behaviour (sumbit the form)
    event.preventDefault();
    //Now most-probably you'd like to do something different for each button clicked:
    var buttonIdParts = $( this ).attr('id').split('-');
    //Now you're left with the number from the id
    var buttonId = buttonIdParts[1];
    switch(buttonId)
    {
    case 1:
       // execute code block 1
       //AJAX Call, whatever
        break;
    case 2:
      //  execute code block 2
        break;
    default:
    //code to be executed if n is different from case 1 and 2
    }
});

您可以使用data attribute

,而不是解析id
<input type="button" id="btnEditUser-1" class="btnEditUser" data-button-id="1">
<input type="button" id="btnEditUser-2" class="btnEditUser" data-button-id="2">
...............
<input type="button" id="btnEditUser-n" class="btnEditUser" data-button-id="n">

直接获取正确的ID:

//This goes inside the events handler
var buttonId = $( this ).attr('data-button-id');

重要的是要注意在事件处理程序回调函数中this的上下文是刚刚单击的按钮,而$( this )是jQuery选择此按钮(来自DOM)并从中创建jQuery Object