代码之家  ›  专栏  ›  技术社区  ›  JarroVGIT

jQuery对话框只显示一次

  •  0
  • JarroVGIT  · 技术社区  · 14 年前

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

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

    我已经搜索了互联网,但解决方案对我没有帮助。我不知道我在这里做错了什么。这是一个很常见的问题,但我似乎掌握了正确的代码,对吧?

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

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

    通过这种方式,我认为我在单击按钮时启动对话框(而不是页面加载),并在关闭对话框时销毁实例。显然这也不起作用。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Mifeng    14 年前

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

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

    看见 一 文件: http://api.jquery.com/one/

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

        2
  •  0
  •   Miqdad Ali    14 年前

    更改并尝试

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

    更改为

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

    也更改这行

    close: function() {
         $("#editdialog").dialog("close")
    
        3
  •  0
  •   Denys Séguret    14 年前

    代替

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

    通过

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

    one 设计为只能工作一次。