2012-03-19 15 views
9

मैं jQuery UI का टैब का उपयोग कर रहा हूँ पर क्लिक: http://jqueryui.com/demos/tabs/jQuery यूआई टैब, अद्यतन यूआरएल जब एक अलग टैब

ब्राउज़र की वर्तमान यूआरएल अद्यतन करने के लिए कैसे जब एक अलग टैब पर उपयोगकर्ता क्लिक करके इसमें एंकर लिंक जोड़ना: पूर्व: url.html # टैब -4 और एक ही समय में ब्राउज़र के वर्तमान इतिहास को दबाकर।

धन्यवाद!

+0

क्या आप कुछ और जानकारी दे सकते हैं? यह स्पष्ट नहीं है कि आप क्या पूछ रहे हैं ... –

+0

ठीक है, मैं कोशिश करता हूं कि मुझे स्पष्ट लगता है: पी –

+0

ठीक है, मुझे यह बताएं कि यह ठीक है या नहीं;) –

उत्तर

10

यह आपको जो चाहिए वह प्राप्त करना चाहिए। मैं jQuery ui क़ौम में नमूना एचटीएमएल इस्तेमाल किया

 $("#tabs").tabs({ 
      select: function(event, ui) {     
       window.location.hash = ui.tab.hash; 
      } 
     }); 
+1

बिल्कुल सही, बहुत धन्यवाद –

+0

@ जेरोम ग्लेड – DG3

+0

मदद करने के लिए यह सादा काम नहीं करता है। क्या आप अपना जवाब विस्तृत या अपडेट करना चाहते हैं? – Kehlan

28

लिए jQuery यूआई 1.10 और बाद में showactivate के पक्ष में पदावनत किया गया है। id अब मान्य jQuery नहीं है। इसके बजाय .attr('id') का उपयोग करें। अंत में, bind() के बजाय on('tabsactivate') का उपयोग करें।

$(function() { 
    $("#tabs").tabs({ 
     activate: function(event, ui) { 
      window.location.hash = ui.newPanel.attr('id'); 
     } 
    }); 
}); 

पोस्ट-निर्माण विधि:

$("#myTabs").on("tabsactivate", function(event, ui) { 
    window.location.hash = ui.panel.id; 
}); 

डेमो: http://jsfiddle.net/RVHzV/

प्रत्यक्ष परिणाम: http://jsfiddle.net/RVHzV/show/light/

इससे पहले JQuery के संस्करण

एक हाथ जोड़े अपने टैब कॉल करने के लिए ler टैब आईडी के साथ स्थान हैश अद्यतन करने के लिए:

$("#myTabs").tabs({ 
    // options ... 
    show: function(event, ui) { 
     window.location.hash = ui.panel.id; 
    } 
}); 

तुम भी करने के बाद अपने यूआई टैब्स बनाई गई हैं इस जोड़ सकते हैं:

$("#myTabs").bind("tabsshow", function(event, ui) { 
     window.location.hash = ui.panel.id; 
}); 

कोड डेमो: http://jsfiddle.net/jtbowden/ZsUBz/1/

नमूदार परिणाम: http://fiddle.jshell.net/jtbowden/ZsUBz/1/show/light/

+0

यह काम कर रहा है लेकिन ब्राउजर एंकर पर जाने के लिए नीचे स्क्रॉल करता है दूसरा समाधान सही है लेकिन धन्यवाद :) –

+0

जब आप कहते हैं "आप इसे भी जोड़ सकते हैं," क्या आपका मतलब है कि आप कर सकते हैं या आपको करना है? आपके उत्तर का पहला भाग अकेले काम नहीं करता है। इसके अतिरिक्त, '.bind()' घटना मेरे पृष्ठ पर कभी भी हिट नहीं होती है। – Kehlan

+0

आप शायद jQuery UI के एक नए संस्करण का उपयोग कर रहे हैं। JQuery शो 1.9 के लिए 'शो' विधि को बहिष्कृत किया गया था और 1.10 के लिए हटा दिया गया था। इसे अब 'सक्रिय' कहा जाता है। JQuery के लिए भी 'id' समर्थित नहीं है। आपको '.attr ('id') 'का उपयोग करने की आवश्यकता है। उपरोक्त संशोधन –

1

मैं उपयोग करने के लिए "को सक्रिय" URL में दिखाने के लिए मेरी प्रारंभिक टैब पाने के लिए "बनाने" के बजाय था:

$('#tabs').tabs({ 
     create: function(event, ui) { 
      window.location.hash = ui.panel.attr('id'); 
     } 
    }); 

यह समाधान करने लगता है यूआरएल बदलने के लिए काम कर रहे हैं, लेकिन जब मैं यूआरएल पर वापस जाता हूं तो यह मेरे लिए टैब नहीं स्विच करता है। क्या मुझे उस यूआरएल पर हिट होने पर स्विच टैब बनाने के लिए कुछ खास करना है?

+0

मुझे याद है कि पृष्ठ को अपडेट करने के लिए जब हैश टैग इतिहास में वापस जाकर बदलता है, तो आपको एक जावास्क्रिप्ट की आवश्यकता होती है जो यूआरएल के हैश वैल्यू को हर सेकेंड सेकेंड की जांच करता है और पेज पर आधारित जो कुछ भी करने की ज़रूरत है उस हैश पर (यदि आप केवल टैब के सेट के लिए खंड का उपयोग कर रहे हैं, तो आप बस इसी टैब को सक्रिय कर सकते हैं)। – JohnRDOrazio

0

ऊपर जेफ बी के काम का निर्माण ... यह jQuery 1.11.1 के साथ काम करता है।

$("#tabs").tabs(); //initialize tabs 
$(function() { 
    $("#tabs").tabs({ 
     activate: function(event, ui) { 
      var scrollTop = $(window).scrollTop(); // save current scroll position 
      window.location.hash = ui.newPanel.attr('id'); // add hash to url 
      $(window).scrollTop(scrollTop); // keep scroll at current position 
    } 
}); 
}); 
+0

स्क्रॉल स्थिति – JohnRDOrazio

0

अन्य उत्तरों के संयोजन ने मेरे लिए काम किया।

$("#tabs").tabs({ 
    create: function(event, ui) { 
     window.location.hash = ui.panel.attr('id'); 
    }, 
    activate: function(event, ui) { 
     window.location.hash = ui.newPanel.attr('id'); 
    } 
}); 
2

सबसे पहले, हम (इस नवीनतम jQueryUI के लिए है) टैब परिवर्तन पर हैश अद्यतन करने की आवश्यकता:

$('#tabs').tabs({ 
    beforeActivate: function (event, ui) { 
     window.location.hash = ui.newPanel.selector; 
    } 
});  

फिर हम हैश परिवर्तन पर सक्रिय टैब अद्यतन करने की आवश्यकता है (यानीब्राउज़र इतिहास/आगे बटन और उपयोगकर्ता टाइपिंग हैश में मैन्युअल रूप से सक्षम करने, वापस):

$(window).on('hashchange', function() { 
    if (!location.hash) { 
    $('#tabs').tabs('option', 'active', 0); 
    return; 
    } 
    $('#tabs > ul > li > a').each(function (index, a) { 
    if ($(a).attr('href') == location.hash) { 
     $('#tabs').tabs('option', 'active', index); 
    } 
    }); 
}); 
+0

का ख्याल रखने का अच्छा समाधान code.jquery.com/ui/1.12.1/jquery-ui.js के साथ यह अच्छा काम करता है – user1256378

1
$("#tabs").tabs({    
     activate: function(event, ui) { 
      //Key => random string 
      //url => URL you want to set 
      window.history.pushState({key:'url'},'','url'); 
     } 
    }); 
0

मैं अपने jQuery उत्तरदायी टैब के भीतर इस विधि का इस्तेमाल किया सक्रिय टैब के साथ यूआरएल हैश करने के लिए।

$(function() { 
     $('#tabs, #subtabs').responsiveTabs({ 
      activate: function(event, ui) { 
      window.location.hash = $("ul li.r-tabs-state-active a").attr("href"); 
     }, 
     startCollapsed: 'accordion' 
     }); 
}); 
संबंधित मुद्दे