2010-02-16 16 views
5

JQuery संवाद मुझे हाल ही में बहुत दर्द दे रहा है। मेरे पास निम्न div है जिसे मैं पॉप अप करना चाहता हूं। (ध्यान न दें कि कक्षाओं वाक्य रचना में दोहरे उद्धरण चिह्नों को नहीं दिखाते)Jquery Dialog - प्रारंभिकरण के बाद div गायब हो जाता है

TABLE class=widget-title-table border=0 cellSpacing=0 cellPadding=0> 
<TBODY> 
<TR> 
    <TD class=widget-title><SPAN class=widget-title>Basic Info</SPAN></TD> 
    <TD class=widget-action> 
    <DIV id=edit-actions jQuery1266325647362="3"> 
     <UL class="linkbutton-menu read-mode"> 
      <LI class="control-actions"> 
       <A id="action-button" class="mouse-over-pointer linkbutton">Delete this     stakeholder</A> 
      <DIV id="confirmation" class="confirmation-dialog title=Confirmation"> 
       Are you sure you want to delete this stakeholder? 
      </DIV> 

</LI></UL></DIV></TD></TR></TBODY></TABLE> 

इस के लिए JQuery है ...

$(document).ready(function() { 

$('#confirmation').dialog({ 
    bgiframe: true, modal: true, autoOpen: false, closeOnEscape: false, 
    draggable: true, position: 'center', resizable: false, width: 400, height: 150 
    }); 

}); 

और संवाद '

var confirmationBox = $('#confirmation',actionContent); 
if (confirmationBox.length > 0) { 


    //Confirmation Needed 
    $(confirmationBox).dialog('option', 'buttons', { 
     'No': function() { 
      $(this).dialog('close'); 
     }, 
     'Yes': function() { 
      $('ul.read-mode').hide(); 
      $.post(requestUrl, {}, ActionCallback(context[0], renderFormUrl), 'json'); 
      $(this).dialog('close'); 
     }    
    }); 

    $(confirmationBox).dialog('open'); 

} 
द्वारा open'ed है

समस्या प्रारंभ में ही शुरू होती है। जब दस्तावेज़ लोड होता है, तो <div #confirmation> मार्कअप से हटा दिया जाता है! मुझे पहले एक समान समस्या थी, लेकिन मैं यहां उस समाधान का उपयोग नहीं कर सकता। इस पृष्ठ पर मेरे पास एकाधिक पॉपअप divs हो सकते हैं।

जब मैंने इसे खोलने से ठीक पहले प्रारंभिक जोड़ा; फॉर्म पॉप अप किया। लेकिन जब मैं इसे बंद करता हूं, div हटा दिया जाता है; तो मैं पॉपअप फिर से देखने में सक्षम नहीं हूँ।

+0

क्या आपने फ़ायरबग में कंसोल को देखा है कि क्या कोई त्रुटियां हैं या नहीं? – Samuel

+0

कंसोल – Zuber

+0

पर कोई त्रुटि नहीं दिखाई गई है आप jquery ui – ant

उत्तर

3

ठीक है। मुझे लगता है कि मैंने इसे लोगों से आपकी मदद से खींचा है।

कुछ "आत्म परिभाषित" संवाद के बारे में तथ्यों कि अब मैं जानता (कृपया अगर मैं गलत हूँ को सही):

  1. एक <div> संवाद के रूप में आरंभ नहीं हो जाता है, यह इसके मूल स्थान से हटा दिया जाता है और <div class="ui-dialog"> में <body> तत्व पर ले जाया गया। तो यह 'स्वाभाविक रूप से' गायब हो जाता है।

  2. संवाद का चयन करने के लिए, अब आपको एक अद्वितीय पहचानकर्ता की आवश्यकता है। यह ज्यादातर मामलों में आईडी हो सकता है, या उस div पर कुछ अन्य विशेषताओं जो इसे पृष्ठ पर अद्वितीय बनाता है।

  3. डायलॉग मार्कअप हर बार संवाद शुरू होने पर बनाया जाता है। इसलिए, AJAX कॉल के मामले में यदि पहले से मौजूद एक मौजूदा संवाद शुरू किया गया है, तो आप पॉपअप को एक से अधिक बार प्राप्त करेंगे (जितनी बार इसे पुन: प्रारंभ किया गया था)। इसे हल करने के लिए, मैंने रीइंटाइलाइजिंग से पहले मौजूदा संवाद मार्कअप हटा दिए। मुझे ऐसा करना पड़ा क्योंकि मेरे AJAX प्रतिक्रिया में कुछ संवाद हो सकते हैं जिन्हें शुरू करने की आवश्यकता है।

    function InitializeConfirmationDialog() { 
        $('div.confirmation-dialog').each(function() { 
        var id = $(this).attr("id"); 
        if ($('div.ui-dialog-content[id="' + id + '"]').length > 0) { 
         $('div.ui-dialog-content[id="' + id + '"]').parents('div.ui-dialog:first').html("").remove();     
        } 
        $(this).dialog({ 
         bgiframe: true, modal: true, autoOpen: false, closeOnEscape: false, 
         draggable: true, position: 'center', resizable: false, width: 400, height: 150 
        }); 
    
    
    }); 
    

    }

0

क्या आप सुनिश्चित हैं कि एक और केवल एक div में आईडी "पुष्टिकरण" है? डुप्लिकेट आईडी की अनुमति नहीं है।

+0

क्या JQuery संवाद केवल आईडी पर काम करता है? क्या हम $ ('div.popup') जैसे कुछ नहीं कर सकते हैं। संवाद ({..})? अभी तक, मुझे यकीन है कि पृष्ठ में एक "पुष्टि" – Zuber

5

कारण आप इसे देख रहे हैं #confirmation को हटा दें क्योंकि $("#foo").dialog() डैम में जहां भी है, वहां से डीओएम में रैपर तत्वों के अंदर दस्तावेज़ को नीचे ले जाया जाएगा जो प्रारंभिक रूप से छिपी हुई संवाद स्टाइल बनाते हैं। यह समझा जाता है कि खोले जाने तक संवाद छुपाए जाते हैं।

+0

धन्यवाद था। मुझे बस एहसास हुआ। मुझे लगता है कि समस्या यह है कि मैं अपने 'actionContext' में div को फिर से खोज रहा हूं। लेकिन Jquery अब उस div के दायरे के बाहर ले जाया गया है। तो, क्या आईडी संवाद खोलने का एकमात्र तरीका है? – Zuber

0

अनुमोदित जवाब भी मेरे लिए काम किया। मैं उपयोग कर रहा था:

$('.myLink').click(function(){ 
    $(this).next().dialog(...) 
}); 

और यह पहली बार क्लिक करने के बाद वहां नहीं था।

अब मैं आईडी का उपयोग कर रहा direcly: कोई फर्क नहीं पड़ता, जहां संवाद पृष्ठ पर ले जाता है

$("#myId").dialog(...) 

और जाहिर है, यह इसे मिल जाएगा।

2

मेरे मामले में एक साधारण 'वापसी झूठी;' क्लिक फ़ंक्शन में चाल थी:

$("#buttonIdThatOpensTheDialogWhenClicked") 
     .button() 
     .click(function() { 
       $("#myDialog").dialog("open"); 
       return false; 
     }); 
    });  
संबंधित मुद्दे