jQuery循环创建一个按钮

时间:2012-12-10 11:41:29

标签: php jquery jquery-ui

我目前有一个jQuery函数,onclick打开一个对话框。这允许用户回复问题。

我遇到的问题是,如果有多个问题,该功能仅适用于创建的第一个按钮。

PHP代码

$C = count($array2);
    for($i=0; $i < $C; $i++)
    {
        echo "<button id='reply'>Reply</button";
    }

的jQuery

$(function() {
    var name = $( "#name" ),
    allFields = $( [] ).add( name ),

    $( "#form" ).dialog({
        autoOpen: false,
        height: 200,
        width: 700,
        modal: true,
        buttons: {
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            allFields.val( "" ).removeClass( "ui-state-error" );
        }
    });

    $( "#reply" ).click(function() {
        $( "#form" ).dialog( "open" );
    });
});

我想要的是点击任何这些按钮,对话框将打开,允许用户回复评论。

提前致谢。

戴夫。

2 个答案:

答案 0 :(得分:0)

首先,ID应该是唯一的。请考虑使用reply作为类:

echo "<button class='reply'>Reply</button>";

现在您的代码可以使用:

$(".reply").click(function() {
    $( "#form" ).dialog( "open" );
});

其次,您可能需要考虑委托父级以避免添加不必要的事件处理程序。例如,如果所有这些回复按钮都包含在元素#container中,则可以使用:

$('#container').on("click",".reply",function(){
    $( "#form" ).dialog( "open" );
});

答案 1 :(得分:0)

对于“回复”按钮,您应该使用Class而不是Id。请尝试以下代码:

.....

for($i=0; $i < $C; $i++)
{                                   
     echo "<button class='reply'>Reply</button";
}

.....

$( ".reply" ).click(function() {
      $( "#form" ).dialog( "open" );
});