कुछ हद तक आश्चर्यजनक रूप से, ऐसा करने का कोई आसान तरीका नहीं है। आईई में select ईवेंट है जो सभी तत्वों पर लागू किया गया है लेकिन अन्य ब्राउज़रों ने इसे इनपुट से परे कभी नहीं बढ़ाया है। आपको पूरे दस्तावेज़ पर keyup
और mouseup
ईवेंट को संभालना होगा, और फिर भी, जब चयन वास्तव में नहीं बदला जाता है तो भी आपकी कॉलबैक को कॉल किया जा सकता है।
अपडेट 13 अक्टूबर 2013
वेबकिट ब्राउज़रों कुछ साल के लिए Document
नोड्स पर selectionchange
घटना का समर्थन किया है। आईई इस घटना को संस्करण 5.5 पर भी समर्थन देता है। उदाहरण:
document.onselectionchange = function() {
console.log("Selection changed");
};
यहाँ एक सरल उदाहरण है:
function selectCallback(selectionParentElement) {
console.log("Selecting, parent element is " + selectionParentElement.nodeName);
}
var mouseOrKeyUpHandler;
if (typeof window.getSelection != "undefined") {
// Non-IE
mouseOrKeyUpHandler = function() {
var sel = window.getSelection();
if (sel.rangeCount > 0) {
var range = sel.getRangeAt(0);
if (range.toString()) {
var selParentEl = range.commonAncestorContainer;
if (selParentEl.nodeType == 3) {
selParentEl = selParentEl.parentNode;
}
selectCallback(selParentEl);
}
}
};
} else if (typeof document.selection != "undefined") {
// IE
mouseOrKeyUpHandler = function() {
var sel = document.selection;
if (sel.type == "Text") {
var textRange = sel.createRange();
if (textRange.text != "") {
selectCallback(textRange.parentElement());
}
}
};
}
document.onmouseup = mouseOrKeyUpHandler;
document.onkeyup = mouseOrKeyUpHandler;
स्रोत
2010-12-06 14:48:01
अगर आप दो से लेख का चयन क्या होने चाहिए या अधिक तत्व ? – jAndy
मुझे परवाह नहीं है, मेरा उपयोगकर्ता ऐसा नहीं करेगा, अगर वे ऐसा करते हैं तो मैं वापस लौटाता हूं जो मैं वापस कर सकता हूं। –
क्षमा करें, मेरा उत्तर हटा दिया गया है, jquery select event केवल textarea और इनपुट फ़ील्ड में काम करता है। – joni