:: चेतावनी ::
.selector को 1.7 के रूप में हटा दिया गया है, 1.9 के रूप में हटा दिया गया है
JQuery ऑब्जेक्ट में एक चयनकर्ता संपत्ति है जिसे मैंने कल अपने कोड में खोदते समय देखा था। यदि यह डॉक्स में परिभाषित किया गया है तो यह न जानें कि यह कितना विश्वसनीय है (भविष्य के प्रमाण के लिए)। लेकिन यह काम करता है!
$('*').selector // returns *
संपादित करें : यदि आप ईवेंट के अंदर चयनकर्ता को ढूंढना चाहते थे, तो वह जानकारी आदर्श रूप से ईवेंट का ही हिस्सा होनी चाहिए न कि एलीमेंट की क्योंकि एक तत्व में विभिन्न चयनकर्ताओं के माध्यम से असाइन किए गए कई क्लिक इवेंट हो सकते हैं। एक समाधान यह होगा कि घटनाओं को जोड़ने के लिए चारों ओर एक आवरण का उपयोग किया जाए bind()
, click()
बजाय इसे सीधे जोड़ने के।
jQuery.fn.addEvent = function(type, handler) {
this.bind(type, {'selector': this.selector}, handler);
};
चयनकर्ता को किसी ऑब्जेक्ट की संपत्ति के नाम से पारित किया जा रहा है selector
। इस तक पहुँचें event.data.selector
।
आइए इसे कुछ मार्कअप ( http://jsfiddle.net/DFh7z/ ) पर आज़माएं :
<p class='info'>some text and <a>a link</a></p>
$('p a').addEvent('click', function(event) {
alert(event.data.selector); // p a
});
अस्वीकरण : याद रखें कि live()
घटनाओं के साथ ही , चयनकर्ता संपत्ति अमान्य हो सकती है यदि DOM ट्रैवर्सल विधियों का उपयोग किया जाता है।
<div><a>a link</a></div>
नीचे दिया गया कोड काम नहीं करेगा, क्योंकि live
चयनकर्ता संपत्ति पर निर्भर करता है जो इस मामले में है a.parent()
- एक अवैध चयनकर्ता।
$('a').parent().live(function() { alert('something'); });
हमारी addEvent
पद्धति में आग लग जाएगी, लेकिन आप भी गलत चयनकर्ता को देखेंगे - a.parent()
।