2009-08-21 12 views
7

मान लें कि निम्न HTML:मैं jquery का उपयोग कर अभिभावक तत्व को कैसे छिपा सकता हूं?

<li class="fooli"> 
    <a class="foo" href="javascript:foo(this);">anchor</a> 
</li> 
<li class="fooli"> 
    <a class="foo" href="javascript:foo(this);">anchor</a> 
</li> 

और निम्न जावास्क्रिप्ट (jquery 1.3.2 का उपयोग कर):

function foo(anchor) { 
    alert($(anchor).attr('href')); 
} 

मेरा लक्ष्य क्लिक किए गए ली को छिपाने में सक्षम होना है, लेकिन मैं कर सकता हूं उन्हें अद्वितीय आईडी निर्दिष्ट नहीं करते हैं। इस प्रकार, मैं इसे $ (एंकर)। पेरेंट()। Hide() जैसे कुछ द्वारा स्थितित्मक रूप से करना चाहता हूं (यानी विशेष एंकर पर क्लिक किया गया)।

हालांकि, उपरोक्त चेतावनी "अपरिभाषित" लौटाती है, इसलिए यह मेरे लिए स्पष्ट नहीं है कि मेरे पास सही jquery ऑब्जेक्ट भी है।

मैं कैसे पता लगा सकता हूं कि ऑब्जेक्ट $ (एंकर) क्या है? विशेष रूप से, मैं कैसे देख सकता हूं कि इसमें क्या विशेषताएं हैं, किस वर्ग में है, यह HTML तत्व क्या है, आदि?

उत्तर

16

यदि आप ऐसा नहीं कर सकते:

साथ
$(function() { 
    $("a.foo").click(function() { 
    $(this).parent().hide(); 
    return false; 
    }); 
}); 

:

<li class="fooli"><a class="foo" href="#">anchor</a></li> 
<li class="fooli"><a class="foo" href="#">anchor</a></li> 
+0

क्यों हाँ, मैं कर सकता हूं। अच्छा विचार! – dfrankow

7

jQuery में $(...) एक भी HTML तत्व कभी नहीं है; यह हमेशा उनकी एक सूची है।

आप .get() उपयोग कर सकते हैं एक नियमित रूप से जावास्क्रिप्ट सूची या, बेहतर करने के लिए कन्वर्ट करने के लिए, .each() का उपयोग करें:

$(anchor).each(function() { alert(this) }); 

यह आपको [object HTMLAElement] की तरह कुछ दे देंगे। इसे पूरी तरह से जांचने के लिए आपको for/in का उपयोग करना होगा, लेकिन .tagName और .innerHTML शायद यह पता लगाने के लिए पर्याप्त है कि आप कहां हैं।

मैं तत्वों को खोजने के लिए $(...).css('outline', '1px solid lime') का उपयोग करना भी पसंद करता हूं। यह उन्हें याद करने में मुश्किल बनाता है और फायरबग के साथ पिन करना आसान बनाता है।

परिशिष्ट: मैं निश्चित रूप से अपने जावास्क्रिप्ट को अपने HTML से अलग करने के बारे में उपर्युक्त उत्तर से सहमत हूं। जेएस इनलाइन मत करो।

+0

मैंने पूछे गए प्रश्न का उत्तर देने के लिए धन्यवाद। – dfrankow

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

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