¿Puedo consultar (en un sentido jQuery) de los elementos DOM - no sólo nodos de texto completo - seleccionados por el ratón?: la selección del selector
Respuesta
Esto le dará todos los elementos que están completamente seleccionados:
var currentSelection = window.getSelection();
var firstRangeInSelection = currentSelection.getRangeAt(0);
var commonAncestor = firstRangeInSelection.commonAncestorContainer;
var nodesInSelection = $(commonAncestor).find("*").filter(function() {
return currentSelection.containsNode(this, false);
});
Para obtener más información sobre las selecciones de DOM, echa un vistazo a this page.
+1, aunque se mejoraría con unas pocas comprobaciones: primero, IE <9 no admite 'window.getSelection()' por lo que debe verificar la existencia de eso; segundo, 'getRangeAt (0)' arrojará un error si no se selecciona nada, por lo que debe verificar que 'currentSelection.rangeCount' sea mayor que cero. –
En realidad, ¿qué sucede si la selección está completamente contenida dentro de un solo nodo de texto? Supongo que obtendrás un objeto jQuery vacío. –
Se pueden adaptar mi respuesta a la siguiente pregunta para que devuelva un objeto jQuery en lugar de una matriz, que debe ser simple:
JS: Get array of all selected nodes in contentEditable div
Sin embargo, esto no funcionará en IE < 9, que no admite el mismo objeto Selection
que otros navegadores. Para eso, necesitarás otro enfoque. Existe mi propia biblioteca Rangy, como se menciona en esa respuesta, pero si necesita el soporte de IE < 9 sin una biblioteca, entonces puedo tocar algo juntos.
¿Qué quiere decir con "en lugar de una matriz"? Mi solución también devuelve un objeto jQuery. Lo siento si no estuvieras hablando de mí :) –
@Chris: No me refería a tu respuesta. Había asumido que OP preferiría una colección jQuery en lugar de una matriz, que es a lo que la respuesta mía a la que me vinculé produce. –
- 1. Cómo configurar la selección del selector por id. No en la posición
- 2. Obtener tiempo de diferentes zonas horarias en la selección de tiempo del selector de tiempo
- 3. ilegible, jqGrid después Jquery selección Selector de fecha
- 4. Selección html interior en un selector de jQuery
- 5. Contexto del selector jQuery
- 6. rendimiento del selector jQuery
- 7. orden basado en la especificidad del selector
- 8. Obtiene la cadena del selector jQuery actual?
- 9. ¿Cómo detener la ejecución del selector?
- 10. clase jQuery dentro del selector de clase
- 11. Animación CCMenuItem Cocos2d en la selección
- 12. de selección del usuario
- 13. cómo ocultar la selección del botón HTML?
- 14. Expresiones regulares del selector jQuery
- 15. Selector de fondo del botón
- 16. ¿Guardar la selección del menú desplegable en una cookie?
- 17. caja de selección de "selector" para iPhone (máquina tragamonedas) para la web?
- 18. Android - del selector de imágenes, Imagen incorrecto
- 19. Selección del idioma del sitio web
- 20. En busca del selector de meses de JavaScript
- 21. Rieles: selección del botón de selección para objetos anidados
- 22. calcule el color del pincel de selección en WPF
- 23. ¿La etiqueta del botón de radio también hace la selección?
- 24. javascript - ¿cambia la acción del formulario según la selección?
- 25. ¿Cuál es la especificidad del selector de atributos?
- 26. Error de aserción en la vista del selector
- 27. jQuery Selector de cumpleaños relacionado con la actualización del formulario
- 28. Deshabilitar la advertencia del selector de tipo de Flex CSS?
- 29. ¿Cómo agregar un botón hecho sobre la vista de selección?
- 30. Obtener el número del selector de contactos
¿Qué significa "resaltar" exactamente? Y, aún más, ¿qué significa "resaltar parcialmente"? – Jon
Eche un vistazo a esto: http://stackoverflow.com/questions/7803016/how-to-wrap-html-tag-for-jquery-mouseup-selection-wrods/7803559#7803559 –
@Randomblue "seleccionado" es el término más familiar para eso ... –