क्या सभी डीओएम तत्वों का पता लगाने का एक आसान तरीका है जो "कवर" (यानी, इसकी सीमाओं के भीतर) एक्स/वाई समन्वय जोड़ी के साथ एक पिक्सेल है?पूर्ण निर्देशांक द्वारा डीओएम तत्व ढूंढना
उत्तर
आप document.elementFromPoint
पर एक नज़र डाल सकते हैं, हालांकि मुझे नहीं पता कि कौन से ब्राउज़र इसका समर्थन करते हैं।
फ़ायरफ़ॉक्स और क्रोम करते हैं। It is also in the MSDN, लेकिन मैं इस दस्तावेज़ से इतना परिचित नहीं हूं इसलिए मुझे नहीं पता कि आईई संस्करण में यह शामिल है।
अद्यतन:
सभी तत्वों को इस स्थिति में किसी भी तरह कर रहे हैं खोजने के लिए, आप इस धारणा है कि यह भी माता-पिता के सभी तत्वों को इस स्थिति में हैं बना सकता है। बेशक यह पूर्ण स्थान तत्वों के साथ काम नहीं करता है।
elementFromPoint
केवल आपको सबसे आगे तत्व प्रदान करेगा। वास्तव में दूसरों को ढूंढने के लिए आपको को सबसे अधिक तत्व के none
पर सेट करना होगा और फिर फ़ंक्शन को फिर से चलाया जाना होगा। लेकिन उपयोगकर्ता शायद यह ध्यान देगा। आपको कोशिश करनी होगी।
@ फ़ेलिक्स क्लिंग यह जाने के लिए एक तरह की तरह लगता है, मैं ब्राउज़र संगतता की जांच करूंगा। –
@etranger - एफएफ <3.0 के पास यह सुनिश्चित नहीं है। इसके अलावा यह बुरा नहीं है: http://www.quirksmode.org/dom/w3c_cssom.html#documentview – galambalazs
@galambalazs: ओह यह सीएसएस तालिका में था ... मैंने केवल डोम टेबल पर एक नज़र डाली थी। –
मैं नहीं रोक पाया अपने आप फेलिक्स Kling के जवाब पर कूदने के लिए:
var $info = $('<div>', {
css: {
position: 'fixed',
top: '0px',
left: '0px',
opacity: 0.77,
width: '200px',
height: '200px',
backgroundColor: '#B4DA55',
border: '2px solid black'
}
}).prependTo(document.body);
$(window).bind('mousemove', function(e) {
var ele = document.elementFromPoint(e.pageX, e.pageY);
ele && $info.html('NodeType: ' + ele.nodeType + '<br>nodeName: ' + ele.nodeName + '<br>Content: ' + ele.textContent.slice(0,20));
});
अद्यतन: पृष्ठभूमि रंग!
यह हर 'mousemove' पर करना बहुत अधिक * सीपीयू ओवरकिल * है। उल्लेख नहीं है कि ओपी ने कभी भी यह नहीं कहा कि वह इसका उपयोग करना चाहता है। – galambalazs
@galambalazs: इसे बहुत गंभीर मत समझो।हालांकि, मेरा सीपीयू लोड 20% से अधिक नहीं है, लेकिन आंतरिक मूसमॉव हैंडलर के आस-पास 'clearTimeout'/'setTimeout' बैलेंसर डालने के लिए स्वतंत्र महसूस करें;) – jAndy
यह काम (fiddle) करता है:
$(document).click(function(e) {
var hitElements = getHitElements(e);
});
var getHitElements = function(e) {
var x = e.pageX;
var y = e.pageY;
var hitElements = [];
$(':visible').each(function() {
var offset = $(this).offset();
if (offset.left < x && (offset.left + $(this).outerWidth() > x) && (offset.top < y && (offset.top + $(this).outerHeight() > y))) {
hitElements.push($(this));
}
});
return hitElements;
}
जब :visible
का उपयोग कर, तो आप इस के बारे में पता होना चाहिए:
दृश्यता वाले तत्व: छिपा हुआ या अस्पष्टता: 0 दिखाई माना जाता है, चूंकि वे अभी भी लेआउट में जगह का उपभोग करते हैं। एनिमेशन के दौरान तत्व को छुपाएं, तत्व को एनीमेशन के तक दिखाई देने वाला माना जाता है। एनीमेशन दिखाने के लिए एनिमेशन के दौरान, तत्व एनीमेशन में शुरुआत में दिखाई देने वाला माना जाता है।
तो, आपकी आवश्यकता के आधार पर, आप visibility:hidden
और opacity:0
तत्वों को बाहर करना चाहते हैं।
- 1. डीओएम तत्व
- 2. डीओएम तत्व
- 3. जीडब्ल्यूटी एक डीओएम तत्व
- 4. जावास्क्रिप्ट डीओएम तत्व हटाएं
- 5. डीओएम तत्व/नोड
- 6. डीओएम तत्व क्या है?
- 7. डीओएम ऑब्जेक्ट के jQuery x y दस्तावेज़ निर्देशांक
- 8. जीपीएस निर्देशांक द्वारा दूरी माप
- 9. इनपुट तत्व का 'प्रकार' ढूंढना
- 10. डीओएम से पुनर्प्राप्त तत्व को कैसे जांचें डीओएम
- 11. डीओएम तत्व नोड्स के प्रोटोटाइप को बढ़ाना?
- 12. डीओएम
- 13. डीओएम
- 14. अद्वितीय डीओएम तत्व आईडी कैसे निर्दिष्ट करें
- 15. उत्परिवर्तन पर्यवेक्षकों के साथ ब्लैकलिस्ट डीओएम तत्व
- 16. डीओएम तत्व निर्माण पर JQuery fadeIn()?
- 17. jQuery के अंदर jQuery चालक डीओएम तत्व
- 18. धारक.जेएस - डीओएम तत्व वापस प्राप्त करें?
- 19. किसी सरणी में डुप्लिकेट तत्व ढूंढना
- 20. पायथन: एक सरणी में कोई तत्व ढूंढना
- 21. किसी साझा_प्टर कंटेनर में कोई तत्व ढूंढना?
- 22. एकाधिक वैक्टरों में असामान्य तत्व ढूंढना
- 23. डीओएम
- 24. डीओएम
- 25. डीओएम
- 26. डीओएम
- 27. जावा डीओएम
- 28. सभी डुप्लिकेट पंक्तियों को ढूंढना, जिनमें "छोटे सबस्क्रिप्ट वाले तत्व"
- 29. jQuery .each() डीओएम तत्व देता है और एक jQuery ऑब्जेक्ट
- 30. डीओएम
अच्छी तरह से आप इस प्रश्न से एक सभ्य उत्तर प्राप्त कर सकते हैं: http://stackoverflow.com/questions/48999/getting-div-id-based-on-x-y-position – Orbling
क्या आपका मतलब है कि एक से अधिक तत्व हैं? (आप सभी ओवरलैप की गणना भी करना चाहते हैं?) – galambalazs
देखें कि यह समाधान आपको http://jsfiddle.net/eyxt2tt1/2/ में मदद करता है, तो स्क्रिप्ट यह पता लगा सकती है कि आपके DOM तत्व समन्वयित सेट के भीतर हैं या नहीं। – GibboK