Javascript jquery对话框没有';t在手风琴mvc剃须刀中工作

Javascript jquery对话框没有';t在手风琴mvc剃须刀中工作,javascript,jquery,asp.net-mvc-3,jquery-ui,razor,Javascript,Jquery,Asp.net Mvc 3,Jquery Ui,Razor,我正在从事razor项目,需要在其中显示jquery模式弹出窗口。当它不是从手风琴上启动时,弹出窗口显示良好,但一旦我将它放在那里,按钮就不会显示弹出窗口,而是从不同的按钮触发功能 我在标记中有以下内容: @using (Html.BeginForm("ASPXView", "Report", FormMethod.Post)) { @Html.ValidationSummary(true, "Password change was unsuccessful. Ple

我正在从事razor项目,需要在其中显示jquery模式弹出窗口。当它不是从手风琴上启动时,弹出窗口显示良好,但一旦我将它放在那里,按钮就不会显示弹出窗口,而是从不同的按钮触发功能

我在标记中有以下内容:

@using (Html.BeginForm("ASPXView", "Report", FormMethod.Post)) {
    @Html.ValidationSummary(true, 
         "Password change was unsuccessful. Please correct the errors and try again.")
    <div>
        @Html.Hidden("Id", Model.Report.Id)
        <div id="accordion">

            @foreach (var item in Model.Parameters)
            {
                <h3><a href="#">@Html.LabelFor(m => item.Name, item.Prompt)</a></h3>
                <div>
                    <div class="editor-label">
                        Search @*Html.TextBox("Search")*@ 
                        <input id="@("Search" + item.Name)" type="text" name="q" data-autocomplete="@Url.Action("QuickSearch/" + item.Name, "Report")" />
                    </div>

                    <div class="editor-field">
                        <select multiple id="@("Select" +item.Name)" name="@("Select" +item.Name)"></select>                           
                    </div>

                    <div class="removed">                     
                     <button id="opener">Open Dialog</button>               
                    </div>              
                </div>
            }         
        </div>
        <p style="text-align: right">
            <input type="submit" value="Submit" />
        </p>
    </div>
}
<div id="dialog" title="Basic dialog">
    <p>Test Content.</p>
</div>
@使用(Html.BeginForm(“ASPXView”,“Report”,FormMethod.Post)){
@Html.ValidationSummary(true,
“密码更改失败。请更正错误并重试。”)
@Html.Hidden(“Id”,Model.Report.Id)
@foreach(Model.Parameters中的var项)
{
搜索@*Html.TextBox(“搜索”)*@
打开对话框
}         

} 测试内容

JS代码:

<script type="text/javascript">
    var openDialog = function () {

        $('#dialog').dialog('option', 'buttons', {
            "Cancel": function () {
                $('#dialog').dialog('close');
            }
        });


        $('#dialog').dialog('open');

    };
    $(function () {
        $("#dialog").dialog({
            autoOpen: false,
            show: "blind",
            hide: "explode"
        });
        $('#opener').click(openDialog);
    })

</script>

var openDialog=函数(){
$('#dialog')。dialog('选项','按钮'{
“取消”:函数(){
$('dialog')。dialog('close');
}
});
$('dialog')。dialog('open');
};
$(函数(){
$(“#对话框”)。对话框({
自动打开:错误,
表演:“盲人”,
隐藏:“爆炸”
});
$(“#opener”)。单击(打开对话框);
})
正如我所说,当我将打开的对话框放在对话框div下面,在accordio div之外,弹出窗口会正常出现,但一旦我把按钮放在那里,弹出窗口就不会出现

提前谢谢你的建议


JS代码更新:

<script type="text/javascript">
    $(function () {
        $('#opener').click(function () {
            $("#dialog").dialog('destroy');
            $("#dialog").attr("title", "Your Title Heren");
            $("#dialog").dialog({
                height: 620,
                width: 700,
                modal: true
            });
        });

    })
</script>

$(函数(){
$(“#开场白”)。单击(函数(){
$(“#dialog”).dialog('destroy');
$(“#dialog”).attr(“标题”,“此处为您的标题”);
$(“#对话框”)。对话框({
身高:620,
宽度:700,
莫代尔:对
});
});
})
用这个代码替换我的代码后,我只能从手风琴中的第一个项目看到弹出窗口,而不能从其他两个项目看到弹出窗口。 此外,一旦弹出窗口显示在屏幕上,回发就会发生,并且附加到另一个按钮上的事件也会发生提交按钮。你认为这是为什么


谢谢

也许你应该有这样的jQuery

$('button[id^=opener]').click(function (){
 $("#dialog").dialog('destroy');
    $("#dialog").attr("title", "Your Title Heren");
    $("#dialog").dialog({
        height: 620,
        width: 700,
        modal: true
    });
});
$('button[id^=opener]').click(function (){
// Rest Continues
编辑: 加价应该是这样的

@int i = 0;
 @foreach (var item in Model.Parameters)
        {
          // your rest of the Code
                <div class="removed">                     
                 <button id="opener"+i>Open Dialog</button>               
                </div>              
            </div>
i++;
        }      

请检查我编辑的代码和下面的描述,解释发生了什么。非常感谢您的帮助$(“#dialog”).dialog('destroy');会破坏对话框,而“openDialog”中的事件只执行“打开”操作,清除该破坏操作将使对话框打开多次。@HaBo您是指按钮的id,在本例中为“打开者”?Thanks@HaBo现在代码什么都不做,甚至不显示弹出窗口。请在这里找到完整的代码,也许你可以找到为什么不工作。非常感谢您的帮助。请检查浏览器上的源代码、按钮的ID是如何创建的,如果没有创建像opener0、opener1、opener2这样的ID,请将代码更改为“打开”对话框