0

是的,我有一个旧帖子,几乎相同的问题,但是当我花时间自己编写而不是使用@Tim Downs 代码时,我比我想象的更接近。现在唯一的问题是,每次我点击按钮时,它都会添加另一块,所以最好的展示方式是自己去垃圾箱尝试一下

http://jsbin.com/ogiyed/1/edit

代码在这里:

function getSelected() {
     if(window.getSelection) { return window.getSelection(); }
    else if(document.getSelection) { return document.getSelection(); }
                else {
                        var selection = document.selection && document.selection.createRange();
                        if(selection.text) { return selection.text; }
            return false;
        }
        return false;
    }

$('.selections').not('.username').mouseup(function(e) {
var uid = $('.selections').find('.username').text();
var selection = getSelected();
if(selection) {
$('button').click(function() {
var text = $('#textarea_content');
text.val(text.val()+'[quote="'+ uid +'"]'+ selection +'[/quote]');
});
}
});

它几乎就像一个魅力;)

4

1 回答 1

1

您在 mouseup 处理程序中分配了一个单击处理程序,因此在每次 mouseup 时它都会添加一个额外的单击处理程序,所有这些都将在每次按钮单击时执行。

如果您需要重新定义现有的点击处理程序,您首先要删除前一个,.off('click')然后分配一个新的:

$('button').off('click').click(function() {
   var text = $('#textarea_content');
   text.val(text.val()+'[quote="'+ uid +'"]'+ selection +'[/quote]');
});

更新演示:http: //jsbin.com/ogiyed/4/

(顺便说一句:缩进你的代码!)

于 2013-03-07T20:17:41.680 回答