jquery 如何实现点击 p( class=‘aa’,没有 id)而选中 p 里面的文字?

2017-06-21 14:14:28 +08:00
 tianxiacangshen
<p class="aa">v2ex</p>

点击这个 p 之后实现 V2EX 处于选中状态
5583 次点击
所在节点    jQuery
23 条回复
hwding
2017-06-21 14:24:17 +08:00
var V2EX = $('.aa');

v2ex.click(function () {
this.focus();
this.select();
});
noe132
2017-06-21 14:26:17 +08:00
function SelectText(element) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
littleylv
2017-06-21 14:26:41 +08:00
@hwding #1 VM206:1 Uncaught TypeError: this.select is not a function

据我所知,貌似无法做到
subdued
2017-06-21 14:29:20 +08:00
p 换成 input 样式调成 p 的成不成 就可以用 1 楼的方法了
tianxiacangshen
2017-06-21 14:47:19 +08:00
@hwding 这个适用于 textarea 和 input,div p 不适用
tianxiacangshen
2017-06-21 14:48:02 +08:00
@subdued 我这边这样实现太麻烦了,本身的样式和 js 效果就有不少了,有其他办法吗
ajan
2017-06-21 15:30:02 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>

<p class="aa">v2ex</p>

<script type="text/javascript" src="https://cdn.staticfile.org/jquery/1.11.2/jquery.min.js"></script>
<script>
function SelectText(element) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
};

$('.aa').click(function(){
SelectText(this);
});
</script>
</body>
</html>
ajan
2017-06-21 15:30:33 +08:00
@noe132 借了你的方法
duan602728596
2017-06-21 15:30:55 +08:00
应该有办法,html5 有 api 可以做到,晚上回去查查我以前的笔记
yangxiongguo
2017-06-21 16:37:54 +08:00
cowpea
2017-06-21 16:43:12 +08:00
$('.aa').click(function(){
console.log($(this).html());
})
cowpea
2017-06-21 16:54:33 +08:00
啊,刚才没看到选中状态,那就
$('p.aa').click(function(){
$(this).trigger('select')
})
hzw94
2017-06-21 17:06:20 +08:00
@noe132 @ajan @yangxiongguo

学到了,谢谢
cowpea
2017-06-21 17:15:59 +08:00
$('p.aa').click(function(){
var str='<input type="hidden" class="aac" value=\''+$(this).html()+'\'/>';
$(this).after(str);
$(".aac").select();
})

=-=就不信弄不出
xycool
2017-06-21 18:26:00 +08:00
tianxiacangshen
2017-06-21 18:59:18 +08:00
@hwding
@noe132
@littleylv
@subdued
@ajan
@ajan
@duan602728596
@cowpea
@hzw94
@xycool

xycool 的方法完美实现,不需要改变标签属性,代码少,有需要的赶紧 mark 吧
hwding
2017-06-21 22:07:47 +08:00
学习到了 哈哈
est
2017-06-21 22:52:50 +08:00
用 label for
fytriht
2017-06-21 23:04:33 +08:00
function selectElementContents(el) {
var range = document.createRange();
range.selectNodeContents(el);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}

const el = querySelector('.aa')
el.addEventListner('click', function () {
selectElementContents(this)
})

搜一下就有答案了:
https://stackoverflow.com/questions/6139107/programmatically-select-text-in-a-contenteditable-html-element
MrFireAwayH
2017-06-22 14:48:00 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX