jQuery实现在textarea指定位置插入字符或表情的方法
```javascript
(function($) {
$.fn.extend({
insertAtCaret: function(myValue) {
var $t = $(this)[0]; // 获取textarea的原生DOM对象
this.focus(); // 让textarea获取焦点
var sel = document.selection.createRange(); // 获取当前选中的范围
this.focus(); // 再次让textarea获取焦点,确保光标位置正确
if ($t.selectionStart || $t.selectionStart == '0') { // 判断textarea是否有选中的文本
var startPos = $t.selectionStart; // 获取选中的起始位置
var endPos = $t.selectionEnd; // 获取选中的结束位置
var scrollTop = $t.scrollTop; // 保存滚动条的位置,以便恢复原来的位置
this.focus(); // 让textarea获取焦点,确保光标位置正确
$t.scrollTop = scrollTop; // 恢复滚动条的位置
} else { // 如果textarea没有选中的文本,则在尾部添加文本
this.value += myValue; // 直接在尾部添加文本
this.focus(); // 让textarea获取焦点,确保光标位置正确(虽然这里可能不需要)
}
}
}
})
})(jQuery); // 注意这里的jQuery是用来给这个函数传入jQuery对象本身的参数,便于后面的链式调用等操作。因为我们已经处于jQuery环境中了,所以这里可以省略不写jQuery。但保留写法是为了保持代码的完整性。在实际开发中,我们通常会省略这部分内容。避免重复引用jQuery对象本身。