2012-05-06 9 views
7

मैं यह निर्धारित करने में सक्षम होना चाहता हूं कि उपयोगकर्ता वर्तमान में किस पृष्ठ पर है। नेविगेशन लिंक में अद्वितीय शैली जोड़ने के रूप में एक साधारण संकेतक उपयोगकर्ता वर्तमान में अपना संदर्भसरल jQuery addClass() काम नहीं कर रहा है

यहां मेरी स्क्रिप्ट है, सभी चयनकर्ता ठीक काम कर रहे हैं, अगर स्टेटमेंट नौकरी भी करता है, लेकिन addClass() फ़ंक्शन कुछ भी नहीं करता है .. यहाँ मेरे कोड है:

<script> 
$(document).ready(function(){ 
    var pathname = window.location.pathname; 
    $("#links ul li a").each(function() { 
     var href= $(this).attr("href"); 
     if (pathname.indexOf(href) >= 0){ 
      $(this).addClass("active"); 
     } 
    }); 
}); 
</script> 


    <nav id="links"> 
    <ul> 
     <li><a href="index.php">Home</a></li> 
     <li><a>About</a></li> 
     <li><a>Contact</a></li> 
    </ul> 
</nav> 

HTML:

यह काम मिल गया, यह मेरी अंत में कोड है, वहाँ किसी भी improvments के लिए एक की जरूरत है?

$(document).ready(function(){ 
    var pathname = window.location.pathname; 
    var onDomain=true; 
    $("#links ul li a").each(function() { 
     var href= $(this).attr("href"); 
     if (href != undefined && pathname.indexOf(href) >= 0){ 
      $(this).addClass("active"); 
      onDomain=false; 
     } 
    }); 
    if (onDomain){ 
     $("#links ul li:first-child a").addClass("active"); 
    } 
}); 
+1

काम मैं अपनी स्क्रिप्ट के साथ एक परीक्षण का मामला बनाया है और यह ठीक काम करता है। –

उत्तर

3

असाइन hrefa करने के लिए;

<nav id="links"> 
    <ul> 
     <li><a href="index.php">Home</a></li> 
     <li><a href="">About</a></li> 
     <li><a href="">Contact</a></li> 
    </ul> 
</nav> 

फिर प्रयास करें:

var pathname = window.location.pathname; 
    $("#links ul li a").each(function() { 
     var href= $(this).attr("href"); 
     if (href.length && pathname.indexOf(href) >= 0){ 
      $(this).addClass("active"); 
     } 
    }); 

आप HTML को बदल नहीं सकते हैं तो निम्नलिखित की तरह का प्रयास करें:

var pathname = window.location.pathname; 
    $("#links ul li a").each(function() { 
     var href= $(this).attr("href"); 
     if (href != undefined && pathname.indexOf(href) >= 0){ 
      $(this).addClass("active"); 
     } 
    }); 
+0

जो लॉल काम करता है, मुझे भाग को छोड़कर मेरा कोई अंतर नहीं दिखता है .. – michel9501

2
var loc = ''+($(location).attr('href').split('/').slice(-1)); 
if(typeof loc !== 'undefined'){ 
    $("#links li").find("a[href='"+loc+"']").each(function(){ 
     $(this).addClass("active"); 
    }); 
}else(typeof loc === 'undefined'){ 
    $("#links li a:eq(0)").addClass("active"); // if you use 'home' as your first. 
} 
+0

क्या आप मुझे बता सकते हैं कि मेरे कोडिंग में क्या गलत है? – michel9501

+0

यह आपकी स्क्रिप्ट का एक सुधार है, और यदि आपने अपने सीएसएस पर अपने चयनकर्ता 'सक्रिय' को अच्छी तरह परिभाषित किया है तो यह एक आकर्षण की तरह काम करेगा। –

+0

यह मेरे लिए काम नहीं करता है, मैंने 'सक्रिय' वर्ग को अच्छी तरह से परिभाषित किया है (यदि पुरुष जोड़ते हैं तो वर्ग = 'सक्रिय' मैं परिवर्तन देख सकता हूं) – michel9501

3

यह शायद है कि सक्रिय वर्ग ली .. अपने तर्क मान लिया जाये कि सही है और वर्ग ली (HTML और सीएसएस के बिना बताना मुश्किल) को लागू किया जाना चाहिए करने के लिए लागू किया जाना चाहिए है:

if (pathname.indexOf(href) >= 0){ 
     $(this).parent().addClass("active"); 
} 
+0

मैं कक्षा को एंकर पर लागू करना चाहता हूं .. मैं जल्द ही मुख्य पोस्ट में एचटीएमएल और सीएसएस जोड़ूंगा – michel9501

+0

मैंने HTML कोड अपडेट किया है, इस समय सीएसएस की आवश्यकता नहीं है क्योंकि समस्या यह है कि कक्षा HTML में नहीं जोड़ा गया है कोड चाहे यह – michel9501

+0

परिभाषित किया गया है, यहां एक jsfiddle है जो वर्ग को एंकर में जोड़ता है ..http: // jsfiddle।नेट/लुकामा/डीएचएबीके/ – lucuma

0

मुझे यकीन है कि मैं बिल्कुल भी सवाल नहीं हूँ, लेकिन मैं कुछ के लिए जाना चाहूंगा:

$("#links ul li a").filter(function() { 
    return window.location.pathname.indexOf(this.href) != -1; 
}).addClass('active'); 
0
<script type="text/javascript"> 

$(window).load(function() { 
        var url = window.location; 
        $('#nav a').filter(function() { 
         return this.href == url; 
        }).parents("li").addClass('active'); 

      }); 
</script> 

यह काम उपयोग इस स्क्रिप्ट आप मेनू

तरह index.php inclide menu.php आप इस scritp तू सक्रिय वर्ग के लिए यूआरएल लोड और वर्ग मेनू परिवर्तन का पता लगाने का उपयोग करना चाहिए के लिए बाहरी फ़ाइल का उपयोग करते है।

धन्यवाद यू thecodeparadox अपने कोड

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