我有一个函数(仍在开发中),它需要在div中捕获用户选择的文本(而不是文本区域和输入框,因此.select将不起作用)。当选择包含在该div中的单个元素中时,使用.click、selection和range对象效果很好,但如果用户选择跨越div中的多个元素(如多个p),则无法触发。
$('.relevantDivClass').click(function(){
console.log('Got here');
SelObj = window.getSelection();
Range = SelObj.getRangeAt(0);
if (SelObj.anchorNode == SelObj.focusNode){
console.log('executing same node branch');
string = SelObj.toString();
console.log(string)
}
else{
console.log('executing multiple node branch');
//code...
}
});
对于如何在这种情况下触发该事件,有什么想法吗?它仍然在relevantDivClass中,所以我搞不懂为什么.click不会触发。
提前感谢!
发布于 2012-08-08 01:13:50
使用.mouseup()
而不是.click()
。当跨多个段落突出显示文本时,'mouseup‘事件不会在触发'mousedown’的同一元素上触发--这是'click‘事件的定义。.click()
适用于单个段落,因为您在<p>
元素上同时触发了'mousedown‘和'mouseup’,并且它会向上冒泡到其父元素<div>
。
$(function() {
$('.relevantDivClass').mouseup( function() {
alert('Got here');
SelObj = window.getSelection();
Range = SelObj.getRangeAt(0);
if (SelObj.anchorNode == SelObj.focusNode){
alert('executing same node branch');
string = SelObj.toString();
alert(string)
}
else{
alert('executing multiple node branch');
//code...
}
});
});
发布于 2012-08-08 00:56:41
希望使用最新的jQuery版本,请使用以下代码:
$(".relevantDivClass").on("click", function() { /* code */ });
https://stackoverflow.com/questions/11856146
复制相似问题