2012-02-25 15 views
20

Jquery मोबाइल ने एंकर लिंक को सॉर्ट के अनुरोध के रूप में इलाज करने का निर्णय लिया है। हालांकि, यह अच्छा नहीं है यदि आपके पास ब्लॉग पोस्ट का एक भार है जिसमें एक ही पृष्ठ के एंकर लिंक हैं (यानी href = "# specs")।Jquery मोबाइल में काम करने के लिए एंकर लिंक कैसे प्राप्त करें?

क्या किसी विशिष्ट पृष्ठ पर jquery मोबाइल के एंकर लिंक उपयोग को अक्षम करने का कोई तरीका है जो मुझे पता है कि मैं इसका उपयोग नहीं करूँगा, इसलिए मैं पेज के एक हिस्से में ड्रॉप करने के लिए एंकर लिंक का उपयोग कर सकता हूं ?

मुझे केवल उसी पृष्ठ पर एंकर लिंक के लिए समाधान की आवश्यकता है (यानी: href = "# specs")।

धन्यवाद

उत्तर

42

आप एंकर टैग पर एक data-ajax="false" जोड़ने की कोशिश कर सकता है।

अजाक्स के बिना लिंक करना

लिंक जो अन्य डोमेन को इंगित या कि rel = "बाहरी", डेटा-ajax = "false" या लक्ष्य है विशेषताओं अजाक्स के साथ लोड नहीं किया जाएगा। इसके बजाय, ये लिंक एक एनिमेटेड संक्रमण के साथ एक पूर्ण पृष्ठ रीफ्रेश का कारण बनेंगे। दोनों विशेषताएं (rel = "external" और डेटा-AJAX = "false") का एक ही प्रभाव है, लेकिन एक अलग अर्थपूर्ण अर्थ है: rel = "बाहरी" किसी अन्य साइट या डोमेन से लिंक करते समय उपयोग किया जाना चाहिए, जबकि डेटा- AJAX = "false" आपके डोमेन के भीतर अजाक्स के माध्यम से लोड होने से बस एक पृष्ठ चुनने के लिए उपयोगी है। सुरक्षा प्रतिबंधों के कारण, फ्रेमवर्क हमेशा अजाक्स व्यवहार से बाहरी डोमेन के लिंक का चयन करता है।

संदर्भ - http://jquerymobile.com/demos/1.0.1/docs/pages/page-links.html

+1

धन्यवाद !!!!!! – capdragon

+0

मुझे लगता है कि आप इसे लिंक टैग पर रखना चाहते हैं (एंकर टैग के विपरीत)? –

+0

यह एक ही jquery मोबाइल ऐप में बाहरी पृष्ठों (लिंक नहीं) से लिंक करते समय भी उपयोगी होता है, मेरा मतलब है, आपके पास 'index.html' से' create.html # creations' से इंगित एक लिंक है। यह कभी-कभी जेक्यूएम कमांड के रूप में काम करता है, लेकिन कभी-कभी ऐसा नहीं होता है, इसलिए 'डेटा-AJAX = "false" 'योगदान एक अच्छा समाधान है। – Francisco

2

आप अपने पृष्ठ के अंत में निम्नलिखित कोड जोड़ सकते हैं:

<script type="text/javascript"> 
    $('a.native-anchor').bind('click', function(ev) { 
     var target = $($(this).attr('href')).get(0).offsetTop; 
     $.mobile.silentScroll(target); 
     return false; 
    }); 
</script> 

और अपने लंगर लिंक करने के लिए वर्ग "देशी-लंगर" जोड़ें।

यह कुल सॉल्शन नहीं है, क्योंकि आपके ब्राउज़र का बैक बटन आपको पिछले पृष्ठ पर ले जाएगा, न कि लिंक की स्थिति पर, लेकिन यह बिल्कुल काम नहीं कर रहे लिंक से बेहतर है।

मैं यहाँ इस sollution पाया: jQuery Mobile Anchor Linking

+0

यदि पृष्ठ किसी अन्य पृष्ठ से AJAX- लोड किया गया है (जो आमतौर पर JQuery मोबाइल में होता है), तो डेटा-भूमिका = "पृष्ठ" तत्व के अंत में कोड जोड़ना सुनिश्चित करें। –

0
$(document).bind("mobileinit", function() { 
    $.mobile.ajaxEnabled = false; 
}); 
4

तुम मुझे पसंद कर रहे हैं, एक मौजूदा साइट बदलने और आप हर पृष्ठ के माध्यम से अभी जाना नहीं चाहते हैं। आप अपने हेडर पर कोड की एक पंक्ति जोड़ सकते हैं और आपके सभी हेडर और आपके सभी मौजूदा आंतरिक एंकर लिंक डेटा-AJAX = "false" टैग जोड़े जाएंगे।

बेशक, यह मानता है कि आप पहले से ही शीर्षलेख में अपनी जावास्क्रिप्ट फ़ाइल को शामिल कर रहे हैं। यदि आप नहीं हैं तो आपको हर पृष्ठ को फिर भी स्पर्श करना होगा। लेकिन मुझे लगता है कि हर पृष्ठ में पहले से ही ऐसा शामिल किया गया है एक भी जावास्क्रिप्ट फ़ाइल मैं इस लाइन जोड़ा ...

$("a").each(function() { if(this.href.indexOf("#")>=0) $(this).attr("data-ajax",false); }); 

यह आपके $ (दस्तावेज़) में चला जाता है .ready() ब्लॉक की है। यदि आपके पास अभी तक उस ब्लॉक नहीं है, तो यहां संपूर्ण ब्लॉक है।

$(document).ready(function() { 
    $("a").each(function() { if(this.href.indexOf("#")>=0) $(this).attr("data-ajax",false); }); 
}); 

उम्मीद है कि इससे मदद मिलती है। यह वही समाधान user700284 ऑफ़र है लेकिन एक स्वचालित तरीके से है।

-1

धन्यवाद इस समाधान काम के लिए मुझे

<script> 
    $(document).ready(function() { 
    $("a").each(function() { 
     if (this.href.indexOf("index.php") >= 0) $(this).attr("data-ajax", false); 
    }); 
    }); 
</script> 

मैं index.php जो मेरे दस्तावेज़ जड़ है साथ # बदल दिया। लेकिन, यह प्रपत्र बटन यानी लिए काम नहीं करता input type="submit"

0

सबसे पहले आप

$(document).bind('mobileinit', function() { 
    $.mobile.loader.prototype.options.disabled = true; 
    $.mobile.ajaxEnabled = false; 
    $.mobile.linkBindingEnabled = false; 
    $.mobile.loadingMessage = false; 
}); 

फिर एक custom.js फ़ाइल में इस कोड को जगह अपने वेबपेज में इस फाइल को जोड़ने से पहले jQuery मोबाइल js है करने के लिए है लदा हुआ। becuase 'mobilinit' घटना तुरंत ट्रिगर की गई है

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