0

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

这一切都很好,一次。当我关闭对话框时,单击 page1 上的按钮时它不会再次出现。

我搜索了互联网,但解决方案对我没有帮助。我无法弄清楚我在这里做错了什么。这是一个非常常见的问题,但我似乎有正确的代码,对吧?

这是我的代码(无论如何,有用的部分):

<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");
)};

这样,我想当我单击按钮(而不是在页面加载时)时启动对话框,并在关闭对话框时销毁实例。显然这也不起作用。

4

3 回答 3

1

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

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

one文档:http ://api.jquery.com/one/

one():将处理程序附加到元素的事件。每个元素最多执行一次处理程序。

于 2012-09-20T09:40:11.790 回答
0

改变这个并尝试

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

改成

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

也改变这条线

close: function() {
     $("#editdialog").dialog("close")
于 2012-09-20T09:38:23.860 回答
0

代替

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

经过

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

一个被设计为只工作一次。

于 2012-09-20T09:38:31.850 回答