你可以試試這個方法。(如果只有你在你的DIV已經直接文本節點)
window.getSelection().focusNode.parentElement //returns the selected element
,您可以設置ATTR像
window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
您可以在其包裝'mouseup'event with your current div
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="myDiv">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id natus voluptatibus eum explicabo soluta excepturi?
</div>
<div id="myDiv2">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id natus voluptatibus eum explicabo soluta excepturi?
</div>
<script>
var myDiv = document.getElementById('myDiv')
myDiv.addEventListener('mouseup', function(){
window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
})
</script>
</body>
</html>
或者這是最好的方法來添加attr到選定的'div'只,如果有ma ny divs
*「it returns node list」* - 是不是返回Selection對象?無論如何,如果用戶選擇一個更大範圍的文本,包括一些來自你的div和一些來自div之前或之後的元素,你想要做什麼? – nnnnnn
@nnnnnn我會放棄這個選擇。用戶將被允許只選擇一個完整的節點。 –
相關 - https://stackoverflow.com/q/5083682/104380 – vsync