Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery对话框只打开一次_Jquery_Jsp_Jquery Dialog - Fatal编程技术网

Jquery对话框只打开一次

Jquery对话框只打开一次,jquery,jsp,jquery-dialog,Jquery,Jsp,Jquery Dialog,我正在尝试使用jquery对话框,但它似乎只对第一项起作用(只有第一项打开) 以下是脚本: $(document).ready(function () { $("#dialog-form").dialog({ autoOpen: false, height: 500, width: 400, modal: true

我正在尝试使用jquery对话框,但它似乎只对第一项起作用(只有第一项打开)

以下是脚本:

   $(document).ready(function () {

            $("#dialog-form").dialog({
                autoOpen: false,
                height: 500,
                width: 400,
                modal: true
            });

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

     });
HTML代码段:

     <c:forEach var="item" items="${menuList}">
                        <tr>
                            <td width="150px"><a href="#" id="open"><img src="imageGetter?item_id=${item.idItem}" width="100px" height="60px" /></a></td>
                            <td width="200px">${item.itemName}</td>
                            <td width=200px">${item.description}</td>
                            <td width="150px">${item.price}</td>     
                        </tr>
            </c:forEach>

   <div id="dialog-form" title="title1">

        <img src="imageGetter?item_id=${item.idItem}" width="100%" height="50%" />
        <h3>Name: ${item.itemName}</h3>
        <h3>Description: ${item.description}</h3>
        <h3>Price: ${item.price}</h3>

    </div>

${item.itemName}
如果“只有第一个打开”是指每次单击时都会显示对话框,但其中始终包含“第一个”信息。。。我想说这是因为您只创建了一个对话框表单,在foreach循环之外。我甚至不确定您的对话框如何显示适当的值,因为您在对话框中填充的值也来自for循环,而您在创建对话框窗体时不在for循环中

我将通过以下方式解决这个问题:

在foreach循环中,创建指向对话框的链接时,请执行以下操作:

<td width="150px"><a href="#" id="open" data-name="${item.itemName}" data-desc="${item.description}" data-price="${item.price}"><img src="imageGetter?item_id=${item.idItem}" width="100px" height="60px" /></a></td>
在创建对话框标记时:

<div id="dialog-form" title="title1">
    <img src="imageGetter?item_id=${item.idItem}" width="100%" height="50%" />
    <h3>Name: <span id="spanDataName"></span></h3>
    <h3>Description: <span id="spanDataDesc"></span></h3>
    <h3>Price: <span id="spanDataPrice"></span></h3>
</div>

姓名:
说明:
价格:

似乎有多行表具有相同的id
打开
,因此,如果单击id
打开
第一个元素
,对话框将打开。您必须将id更改为类

试着把它改成课堂

<a href="#" class="open">

我想当你点击“打开”时,它应该会打开包含该项目信息的对话框?好吧,@ericrunia的回答与我的想法类似,否则你的逻辑看起来很奇怪:)是的,我放置了一行代码,使@ericrunia误解了这个问题。很抱歉。对于下一个问题如何将数据输入对话框,这将是一个很好的答案。我的问题可能把你弄糊涂了,我做了这一切。但安托·J·苏巴什对这个问题的回答是正确的。你希望这是下一个问题的答案吗?当然,对不起,我误解了。我真的错过了一次又一次使用“开放”id的机会,很好地抓住了anto j!问题到了,你现在可以回答了。
<a href="#" class="open">
$(".open").click(function(){
           $("#dialog-form").dialog("open");
        });