2009-04-11 26 views
5

मैं AJAX लोड किए गए टैब की सामग्री पर कुछ कोड कैसे लागू कर सकता हूं? मैंने लोड की गई सामग्री के अंदर $ (दस्तावेज़) .ready का उपयोग करने की कोशिश की, लेकिन इससे सीएसएस शैलियों को लोड होने से रोका गया (पता नहीं क्यों)।AJAX के बाद कॉलबैक एक टैब लोड हो रहा है

क्या कोई कॉलबैक फ़ंक्शन है? क्या मुझे किसी अन्य तरीके से लोड किए गए दस्तावेज़ के अंदर $ (दस्तावेज़) .ready और शैलियों का उपयोग करना चाहिए?

यदि $ (दस्तावेज़) का उपयोग करना है। लोड किए गए दस्तावेज़ के अंदर पहले से ही ठीक है, तो क्या मुझे इसमें jquery और इसके प्लगइन के संदर्भ भी शामिल करना चाहिए?

उत्तर

8

आप load event की कोशिश की? यह कहा जाना चाहिए, जब टैब की सामग्री लोड हो गई है।

सामान्य रूप से आपको लोड किए गए तत्व को नए पृष्ठ के रूप में नहीं मानना ​​चाहिए और $ (दस्तावेज़) .ready को कॉल करना चाहिए। यह एक नया पृष्ठ नहीं है, लेकिन कुछ नए तत्व डीओएम में जोड़े गए हैं। सभी AJAX विधियों में एक कॉलबैक विधि होती है जिसे लागू किया जाता है, जब डेटा सफलतापूर्वक लोड हो जाता है।

+0

लोड ईवेंट प्रत्येक टैब पर लागू होता है, क्या मुझे उस ईवेंट का उपयोग करना चाहिए और नया कोड लागू करने के लिए इसके अंदर चयनित टैब पुनर्प्राप्त करना चाहिए? प्रत्येक टैब में अलग-अलग डोम होते हैं, जैसे टेबल या फॉर्म। – Gerardo

+0

मैंने खुद ईवेंट का उपयोग नहीं किया है। देखें कि क्या आप कॉलबैक विधि को पारित ईवेंट या UI पैरामीटर से लोड किया गया टैब प्राप्त कर सकते हैं। दुर्भाग्यवश दस्तावेज इन मानकों को समझा नहीं है। टैब के डीओएम का उपयोग करना काम करेगा, लेकिन यह एक "गंदे" समाधान है। – kgiannakakis

+0

निम्नलिखित सम्मेलनों में, मुझे लगता है कि event.target.id उस टैब की आईडी होगी जिसमें सामग्री लोड हो गई है। जांच करने के लिए फायरबग और console.log का प्रयोग करें :) –

5

AJAX के माध्यम से सामग्री को लोड करने के लिए आप किस कोड का उपयोग कर रहे हैं? यदि आप load या ajax जैसे jQuery कमांड का उपयोग करते हैं तो मैं आपके कोड को कॉलबैक फ़ंक्शन के अंदर डालने की अनुशंसा करता हूं। उदाहरण के लिए, का उपयोग कर load

$('#myUITab').load('anotherPage.html', function() { 

    // put the code you need to run when the load completes in here 

}); 
+0

मैं एक टैब की विधि का उपयोग कर रहा हूँ: $ ('# सामग्री') टैब ('जोड़ें', 'टैब/editor.php', डेटा [i] .nombre);। – Gerardo

0

यह करने के लिए एक और तरीका है ajaxComplete का उपयोग करना है:

$("#loading_comtainer").ajaxComplete(function(event,request, settings){ 
    alert("ajaxCompleted"); 
}); 
0

आप tabsload घटना का उपयोग कर सकते http://jqueryui.com/demos/tabs/#event-load

देखें कि यह कैसे नीचे दिए गए उदाहरण में काम कर सकते हैं:

$('#nav_tabs').tabs({ 
    select: function(event, ui){ 
     var url = $.data(ui.tab, 'load.tabs'); 
     if (url == '?ak=/account/logout') { 
      //exclude the logout from using ajax 
      location.href = url; 
      return false; 
     } 
     return true; 
    }, 
}).bind('tabsload',function(event, ui){ 
    alert('The tab is loaded. What now?'); 
}); 
2

jQuery यूआई "टैब" कॉलबैक विधि प्रदान करते हैं। नीचे देखें!

$("#tabs").tabs({ 
    ajaxOptions: { 
     error: function(xhr, status, index, anchor) { 
      $(anchor.hash).html(
       "error occured while ajax loading."); 
     }, 
     success: function(xhr, status) { 
      //alert("ajax success. "); //your code 
     } 
    } 
}); 
संबंधित मुद्दे