2010-06-05 14 views
5

मेरे पास यह jQuery AJAX नेविगेशन टैब प्लगइन है जिसे मैंने सीएसएस-Tricks.com और jQuery hashchange event प्लगइन से कुछ मदद का उपयोग करके बनाया है (ब्राउज़र में हैश परिवर्तन का पता लगाता है इसका समर्थन नहीं करते हैं)।

कोड थोड़ा लंबा है इसे यहाँ पोस्ट करने के लिए, लेकिन यह कुछ इस तरह चला जाता है:

भाग 1) जब एक टैब पर क्लिक किया जाता है, यह है कि टैब के href गुण हो जाता है और जैसे ब्राउज़र नेविगेशन पट्टी में जोड़ने '#tab_name': window.location.hash = $(this).attr("href");

भाग 2) जब नेविगेशन पट्टी परिवर्तन (हैश परिवर्तन), तो वह ऐसा href परिवर्तन हो जाता है: window.location.hash.substring(1); (-स्ट्रिंग के बिना '#' केवल 'TAB_NAME' प्राप्त करने के लिए है), और फिर जानकारी प्रदर्शित करने के लिए AJAX फ़ंक्शन को कॉल करें।

मैं स्वचालित रूप से पहले टैब को लोड करने प्लगइन को गति प्रदान करने के लिए जब पेज पहुँचा जा सकता है, तो कोड के शुरू में मैं डाल चाहते हैं:

if (window.location.hash === '') { // If no '#' is in the browser navigation bar 
    window.location.hash = '#tab_1'; // Add #tab_1 to the navigation bar 
    $(window).trigger('hashchange'); // Trigger a hashchange so 'Part 2' of the plugin calls the ajax function using the '#tab_1' added 
} 

probles है कि यह नहीं बल्कि में एफएफ में काम करता है क्रोम, मेरा मतलब है, सब कुछ काम करता है, लेकिन यह $(window).trigger('hashchange'); काम नहीं कर रहा नहीं करता है, क्योंकि यह पहला टैब मिल की तरह लगता है ..

कोई सुझाव ??

ध्यान दें: यह कुछ समय पहले काम किया, लेकिन अचानक यह नहीं (शायद क्रोम अद्यतन) करता है।

उत्तर

2

मुझे लगता है कि आप एक तरह से ब्राउज़र के साथ खुश नहीं है में घटना को गति प्रदान करने के लिए प्रयास कर रहे हैं। "हैशचेंज" के लिए आपका हैंडलर कहां परिभाषित किया गया है? मेरा सुझाव है कि आप

$('body').bind('hashchange', function() { ... }) 
बजाय "विंडो" की

के लिए यह बाध्यकारी का प्रयास करें। यहां तक ​​कि आपको वेबकिट ब्राउज़र में समस्याएं भी मिल सकती हैं; यदि हां, तो आप अपने शरीर सामग्री रैप करने के लिए एक <div> बनाते हैं, और है कि करने के लिए बाध्य कर सकते हैं।

+0

ठीक है, हैशचेंज इस तरह परिभाषित किया गया है: $ (विंडो)। बाइंड ('हैशचेंज', फ़ंक्शन() {... – Jonathan

+3

मुझे समस्या मिली, मैं $ (विंडो) कॉल कर रहा था। ट्रिगर ('हैशचेंज') ; पहले hashcnage मुझे दिशा की ओर इशारा करते पोर $ (विंडो) .bind ('hashchange', function() {में ... धन्यवाद परिभाषित किया गया था! – Jonathan

संबंधित मुद्दे