2011-10-23 16 views
5

क्या मैं क्वेरी कर सकता हूं (एक jQuery अर्थ में) डीओएम तत्व - बस टेक्स्ट नोड्स - पूरी तरह से माउस द्वारा चुने गए? डोम चयन पर अधिक जानकारी के लिएबिल्डिंग ए: चयन चयनकर्ता

var currentSelection = window.getSelection(); 
var firstRangeInSelection = currentSelection.getRangeAt(0); 
var commonAncestor = firstRangeInSelection.commonAncestorContainer; 

var nodesInSelection = $(commonAncestor).find("*").filter(function() { 
          return currentSelection.containsNode(this, false); 
         }); 

, this page की जाँच:

+0

"हाइलाइट" का अर्थ वास्तव में क्या है? और, और भी, "आंशिक रूप से हाइलाइट" का अर्थ क्या है? – Jon

+0

इस पर एक नज़र डालें: http://stackoverflow.com/questions/7803016/how-to-wrap-html-tag-for-jquery-mouseup-selection-wrods/7803559#7803559 –

+1

@Randomblue "चयनित" है इसके लिए अधिक परिचित शब्द ... –

उत्तर

2

यह आपको सभी तत्वों को पूरी तरह से चयन किया जाता है मिल जाएगा।

+0

+1, हालांकि यह कुछ चेकों द्वारा सुधार किया जा होगा: पहला, आईई <9 window.getSelection() 'ताकि आप उस के होने की जाँच करना चाहिए का समर्थन नहीं करता'; दूसरा, 'getRangeAt (0)' कुछ भी नहीं चुना गया है, तो त्रुटि को फेंक देगा, इसलिए आपको 'currentSelection.rangeCount' शून्य से अधिक होना चाहिए। –

+0

असल में, क्या होता है यदि चयन पूरी तरह से एक पाठ नोड के भीतर निहित है? मुझे लगता है कि आपको एक खाली jQuery ऑब्जेक्ट मिलेगा। –

1

आप निम्नलिखित प्रश्न करने के लिए मेरा उत्तर खुद को अनुकूलित कर नहीं बल्कि एक सरणी से आप एक jQuery वस्तु वापस जाने के लिए है, जो सरल होना चाहिए:

JS: Get array of all selected nodes in contentEditable div

हालांकि, इस आईई < 9 में काम नहीं करेगा, जो अन्य ब्राउज़रों के समान Selection ऑब्जेक्ट का समर्थन नहीं करता है। इसके लिए, आपको एक और दृष्टिकोण की आवश्यकता होगी। जैसा कि उस उत्तर में उल्लिखित है, मेरी खुद की Rangy लाइब्रेरी है, लेकिन यदि आपको लाइब्रेरी के बिना आईई < 9 समर्थन की आवश्यकता है तो मैं कुछ एक साथ दस्तक दे सकता हूं।

+0

आप "के बजाय एक सरणी से" से क्या मतलब है? मेरा समाधान एक jQuery ऑब्जेक्ट भी देता है। क्षमा करें तुम मुझे के बारे में बात करता है, तो थे नहीं :) –

+0

@Chris: मैं अपने जवाब की बात नहीं कर रहा था। मैं मान लिया था ओ पी एक jQuery संग्रह के बजाय एक सरणी है, जो है क्या मेरा जवाब मैं जुड़ा हुआ चाहेगा का उत्पादन करने के लिए। –

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