0

我目前有一个 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" );
    });
});

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

提前致谢。

戴夫。

4

2 回答 2

0

首先,ID 是唯一的。考虑reply改为使用类:

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

现在您的代码应该可以使用:

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

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

$('#container').on("click",".reply",function(){
    $( "#form" ).dialog( "open" );
});
于 2012-12-10T11:45:47.373 回答
0

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

......

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

......

$( ".reply" ).click(function() {
      $( "#form" ).dialog( "open" );
});
于 2012-12-10T11:46:08.800 回答