Jquery dialog only opening once

前端 未结 2 382
抹茶落季
抹茶落季 2021-01-07 14:45

All- I know this has been asked, but the previous solutions don\'t seem to apply to my situation.

I have a simple table with a number of records in each row, with th

相关标签:
2条回答
  • 2021-01-07 15:23

    OKay, so hopefully this will help someone down the road. I actually had two problems going on:

    1. If you dont' destroy the dialog(), then it doesn't really exist in the DOM under the old name. That's why it was always undefined the second time through.
    2. Even if you DO destroy the dialog, you still can't find it. That's because when dialog theoretically returns it to pre-init state, it does so by dropping it at the bottom of the DOM right before the body tag. So, it's no longer in "prev" , or "prevAll".

    I got around this by just setting the name of the dialog box to be the same as the calling div, appended with "Diag". Then I can track it no matter where jquery puts it. Whew.

    $(".deleteLinkDiag a").livequery('click',function() {
                var urlLoad = $(this).attr("href");
                var myParent = $(this).parents("div:eq(0)"); //container div to be replaced
                var myDiag = myParent.attr('id') + 'Diag';
                $("#" + myDiag).dialog({
                        bgiframe: true,
                                resizable: false,
                                height:140,
                                modal: true,
                                autoOpen: false,
                                overlay: {
                                        backgroundColor: '#000',
                                        opacity: 0.5
                                },
                        buttons: {
                                        "Confirm":function()
                                        {
                                                myParent.load(urlLoad, function() { });
                                                $(this).dialog("close");
                                         },
                                        Cancel: function()
                                        {
                                                $(this).dialog("close");
                                        }
                                  },
                        close: function(ev, ui) {
                                $(this).dialog("destroy");
                        }
          });
         $("#" + myDiag).dialog('open');
        return false;
        });
    
    0 讨论(0)
  • 2021-01-07 15:27

    It seems most likely that the problem lies in the fact that the actual dialog div isn't actually being selected correctly. And that (as far as I'm understanding the situation) stems from a bigger problem of wrong requirements on your part.

    If you want to reference a specific div, then you should reference that specific div. Yet, I hear you saying you want to reference a specific div (which is literally the only div which is used as a dialog) at the same time that you say you're afraid to reference that div by an ID.

    Basically, if there is only one div that's used as the dialog, then accept that and just call that div a name:

    <div id="dialog"/>
    

    .

    myDiag = $('#dialog');
    

    This way there is no confusion on if you are selecting the correct div.

    However, if what I said is not an option for some reason, then you can set break points in firebug at the point where you assign myDiag so that you can see what myDiag actually is at execution time.

    0 讨论(0)
提交回复
热议问题