2008-11-13 8 views
16

में पूर्वजों/वंश के संबंधों के लिए परीक्षण वस्तुओं का परीक्षण मैं एक पुन: प्रयोज्य जेएस या jQuery फ़ंक्शन के साथ आने की कोशिश कर रहा हूं जो मुझे परीक्षण करने की अनुमति देगा यदि कोई ऑब्जेक्ट किसी अन्य का डोम वंशज है।जावास्क्रिप्ट या जेक्वायरी

मैं के लिए

$b.parents('nodename').length>0 

कौन शानदार है जब आप केवल अगर एक तत्व उस नाम से किसी भी नोड का एक बच्चा है जांच करने की आवश्यकता परीक्षण के एक मॉडल को देखा है।

लेकिन एक विशिष्ट नोड के बारे में क्या? आप

$b.parents($a).length>0 

क्योंकि jQuery माता-पिता फ़िल्टर करने के लिए तर्क के रूप में एक नोडनाम अभिव्यक्ति लेते हैं।

छोटी पृष्ठभूमि के रूप में, मैं परीक्षण करने की कोशिश कर रहा हूं कि कोई दस्तावेज़ क्लिक करें, ईवेंट का लक्ष्य किसी विशिष्ट ऑब्जेक्ट का बच्चा है। उदाहरण के लिए, यदि event.target $ b का बच्चा है, तो सत्य लौटें, अन्यथा, झूठी वापसी करें। लेकिन इस समारोह में बाद में अन्य प्रभाव हो सकते हैं।

धन्यवाद! हम सब foo तत्वों का चयन कर रहे हैं और उसके बाद ही तत्व है कि उनके तत्काल माता पिता के रूप foo-माता पिता को छानने तो यहाँ

$('#foo').filter(function(){ 

    return $(this).parent().is('#foo-parent'); 

}); 

:

उत्तर

12

jQuery ancestors using jQuery objects में मैं सुझाव

if ($(obj1).parents().index($(obj2)) >= 0) { 
    // obj1 is a descendant of obj2 
} 
+1

बिल्कुल सही। यह वास्तव में चयनकर्ता के बजाय किसी ऑब्जेक्ट को गुजरने की अनुमति देता है जो शानदार है। एक बार फिर धन्यवाद! – dreisch

+4

आप इंडेक्स में एक अनचाहे डीओएम तत्व पारित कर सकते हैं, इसलिए इसे ($ (obj1) .parents() इंडेक्स (obj2)> = 0) –

+0

पर अब सरलीकृत किया जा सकता है। यदि आप चिंतित हैं, तो इसमें $ $ है। Node.contains। –

2

इस प्रयास करें।

आप अगर मौजूदा वस्तु के पूर्वजों के किसी भी नियम का पालन खोजने के लिए देख रहे हैं, तो मुझे लगता है कि यह होना चाहिए:

$('#foo').filter(function(){ 

    return $(this).parents().is('#foo-parent'); 

}); 
21
a.contains(b) 

यह Node.contains का उपयोग कर एक शुद्ध जावास्क्रिप्ट समाधान है। समारोह समावेशी है, a.contains(a) सत्य का मूल्यांकन करता है।

आईई 9 में एक बढ़त मामला है: यदि b एक टेक्स्ट नोड है, contains हमेशा झूठी वापसी करेगा।

+5

यह बहुत अच्छा है! इससे मेरा काम बनता है। मैं हमेशा ढांचे पर शुद्ध जेएस पसंद करते हैं। – Firas

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