2012-09-20 155 views
0

我正在用我的jQuery泡菜。情况如下: 我正在加载一个页面(主页)。当点击某个元素时,打开一个div加载另一个页面(page1)。在这个加载的页面中,我有一个按钮,打开一个对话框,其中包含另一个加载的页面(page2)。jQuery对话框只显示一次

这一切工作正常,一次。当我关闭对话框时,单击第1页上的按钮时它不会再次出现。

我已经搜索了interwebs,但解决方案没有帮助我。我无法弄清楚我在这里做错了什么。这是一个非常普遍的问题,但我似乎拥有正确的代码,对吗?

这是我的代码(有用的部分,反正):

<script> 
$(document).ready(function(e) { 
    $("#editdialog").dialog({ 
       autoOpen: false, 
       width: 400, 
       height: 600, 

    }); 

    $(".editfreight").one("click", function(){ 
     $("#editdialog").load("inc/ajax/editfreight_ajax.php?id=" + $(this).data("freight")); 
     $("#editdialog").dialog("open"); 

    }); 


}); 

</script> 

<div id="editdialog" style="display: hidden"></div> 

好,我希望有人能帮助我在这里!我也试过这样:

$(".editfreight").one("click", function(){ 
$("#editdialog").dialog({ 
        autoOpen: false, 
        width: 400, 
        height: 600, 
        close: function() { 
          $("#editdialog").dialog("destroy") 

     }); 
     $("#editdialog").load("inc/ajax/editfreight_ajax.php?id=" + $(this).data("freight")); 
    $("#editdialog").dialog("open"); 
)}; 

这样一来,我想我开始当我点击按钮(而不是在页面加载),当我关闭对话框销毁实例的对话框。显然这也不起作用。

+0

http://api.jquery.com/one/ – undefined

回答

1

事件处理程序附件应on("click"),不one("click")one只会触发一次

$(".editfreight").on("click", function(){ 
}); 

看到one DOC:http://api.jquery.com/one/

one():附加的处理程序,以用于元件的事件。处理程序每​​个元素最多执行一次。

+0

这个技巧。我使用了一个(),因为Dreamweaver无法识别()。愚蠢的错误。感谢您的注意! –

0

改变这一点,尝试

$(".editfreight").one("click",function(){ 

变化

$(".editfreight").click(function(){ 

改变这一行太

close: function() { 
    $("#editdialog").dialog("close") 
0

更换

$(".editfreight").one("click", function(){ 

通过

$(".editfreight").click(function(){ 

one仅设计为马上开始工作。