2016-09-19 69 views
1

我创建了一个struts2-jsp应用程序,我想要一个对话框弹出dialog pop up 每当编辑超链接点击时,我使用Jquery弹出一个对话框时单击Edit超链接。 问题是只有当第一次编辑被点击时,对话框才会弹出,第二次和其他编辑是在添加记录时动态生成的,对话框不会弹出。jquery:对话框没有在动态生成的表中弹出

jQuery代码是:

<script> 
$(document).ready(function(){ 
$("#todo").dialog({ autoOpen: false }); 
$("#dialogLink").click(function() { 
$("#todo").dialog('open'); 
}); 
}); 
</script> 

动态生成表的代码是:

<div class="content"> 
     <table class="todoTable" cellpadding="5px"> 
      <tr class=even> 
       <th>TITLE</th> 
       <th>STATUS</th> 
       <th>EDIT</th> 
       <th>DELETE</th> 
      </tr> 

      <!--This will iterate through the todolist --> 
      <s:iterator value="gettodoList()" status="todoStatus"> 

       <tr class="<s:if test="#todoStatus.odd == true ">odd</s:if> <s:else>even</s:else>"> 

        <td><s:property value="title" /></td> 
        <td><s:property value="complete" /></td> 

        <!-- This will append the Id with the url --> 
        <td> 
        <a id="dialogLink" href="#">Edit</a> 
        </td> 
        <td><s:url id="deleteURL" action="deleteTodo"> 
            <s:param name="id" value="%{id}">      </s:param> 
         </s:url> <s:a href="%{deleteURL}">Delete</s:a> 
        </td> 
       </tr> 
      </s:iterator> 
      </tbody> 
     </table> 
    </div> 

client side html is

+0

[事件绑定动态创建的元素?](http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements) – vijayP

+0

也'id'可能重复单一文件。尝试给予'class'而不是'id'并通过事件委托技术绑定事件。 – vijayP

+0

确保在更新表后执行jquery代码。也许jQuery代码在开始时只执行一次 – Chandru

回答

1

您需要使用.on()设置事件处理程序,而不是作为后者的.click()只会将事件附加到现有节点上,而第一个将把它附加到现有节点上,并将新节点附加到现有节点上还有类似于如何.live()使用早期版本的jQuery

的工作看看http://api.jquery.com/live/

+0

我使用了.on() 但是仍然弹出第一个编辑超链接对话框 – shashank

+0

,因为您正在设置所有这些将会发生的具有相同ID的迭代项目,或者给它们设置不同的ID或设置类别 –

+0

动态地为每个锚标记创建ID为我工作 – shashank

0

1)那是因为你使用的是id,使用class,它应该工作的罚款。
&
2)您应该尝试使用动态生成元素的on()