2011-03-26 8 views
8

मैं क्लिक पर किसी तत्व के पूर्ण पथ को खोजने का तरीका ढूंढ रहा हूं।किसी तत्व के लिए पूर्ण पथ लौट रहा है?

उदाहरण के लिए, मान लीजिए कि मैं इस HTML कोड है:

<div> <ul> <li>item 1</li> <li>item 2</li> </ul> </div> 
<div> <ul> <li>item 1</li> <li>item 2</li> </ul> </div> 

मैं सक्षम वापसी पथ (और क्या इसे कहते हैं पता नहीं है) क्लिक किया तत्व को होना चाहता हूँ। अलर्ट() अब के लिए करेंगे।

आइए कहें कि मैंने दूसरे div में दूसरे ली तत्व पर क्लिक किया है। मैं के लिए एक कॉल वापस चाहते हैं:

div:eq(1) li:eq(1) 

अगर मैं पहले div के पहले li तत्व पर क्लिक किया, यह होगा:

div:eq(0) li:eq(0) 

मैं यह कैसे करना होगा?

क्या कोई प्लगइन है जो ऐसा कर सकता है, या क्या मुझे पथ में तत्व की अनुक्रमणिका प्राप्त करने के लिए इसे स्क्रैच से बनाना होगा?

धन्यवाद :)

+1

आपको इसके लिए क्या चाहिए? Http://www.selectorgadget.com/ पर भी एक नज़र डालें। –

उत्तर

0

क्या आपने माता-पिता() फ़ंक्शन के बारे में पढ़ा था? http://api.jquery.com/parents/

आप कुछ इस तरह प्राप्त कर सकते हैं

मेरे माता-पिता हैं: स्पैन, पी, DIV, शरीर, एचटीएमएल

+0

ओपी (एन) "क्वालीफायर प्रदान नहीं करता है जो ओपी चाहता है। – Pointy

+0

मैं इसे देख सकता हूं। Eq() को वापस करने का कोई तरीका है? इंडेक्स ऐसा करता है? –

1

.parents()

है कि यह करना होगा?

+0

मुझे लगता है कि दानिप ने क्या कहा, मुझे नहीं लगता कि यह मुझे तत्व का ईक() देगा। –

5

आप प्लगइन दृष्टिकोण चाहते हैं:

(function($){ 
    $.fn.extend({ 
     getFullPath: function(stopAtBody){ 
      stopAtBody = stopAtBody || false; 
      function traverseUp(el){ 
       var result = el.tagName + ':eq(' + $(el).index() + ')', 
        pare = $(el).parent()[0]; 
       if (pare.tagName !== undefined && (!stopAtBody || pare.tagName !== 'BODY')){ 
        result = [traverseUp(pare), result].join(' '); 
       }     
       return result; 
      }; 
      return this.length > 0 ? traverseUp(this[0]) : ''; 
     } 
    }); 
})(jQuery); 

jQuery के लिए एक चयनकर्ता या वस्तु का उल्लेख करें और यह का पूरा पथ मिल जाएगा। stopAtBody वैकल्पिक है, लेकिन यदि सत्य के रूप में आपूर्ति की जाती है तो यह केवल <BODY> टैग (इसे एक वैध jQuery चयनकर्ता बनाने) तक पहुंच जाएगी।

DEMO (उनके रास्ते को देखने के लिए क्लिक करें LI पता चला)

+0

वाह! आप ब्रैड रॉक! धन्यवाद। मुझे समय मिलने पर मैं कोड देखता हूं, लेकिन यह वही दिखता है जो मुझे चाहिए। क्या आप इस तरह के एक अद्भुत जवाब के लिए कुछ मुआवजे पसंद करेंगे? :) –

+0

@user: ब्रैड क्रिस्टी को देय चेक, सी/ओ ब्रैड क्रिस्टी इंक --- बस मजाक कर रहा है। मैं दूसरों की मदद करने के लिए यहां हूं, मुआवजा नहीं दिया गया है, हालांकि मैं प्रस्ताव की सराहना करता हूं। यह सुनकर खुशी हुई कि आप क्या खोज रहे थे।;-) –

+0

हे ब्रैड, क्या आपको निजी तौर पर संदेश भेजने का कोई तरीका है? मुझे इस बारे में कुछ सवाल हैं और एक तरह से मैं इसका उपयोग कर रहा हूं। मैं आपके समय के लिए भुगतान कर सकता था। :) –

6

इस तरह आप पूरा पथ को फिर से संगठित कर सकते हैं:

var q = $(this) 
    .parentsUntil('body') 
    .andSelf() 
    .map(function() { 
    return this.nodeName + ':eq(' + $(this).index() + ')'; 
    }).get().join('>'); 

this answer से प्रेरित होकर।

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