使用JQ格式化文本+创建元素

时间:2012-05-09 11:23:05

标签: jquery

我有两段jquery代码,它们完全分开,但是在一起 - 没有。

基本上,有代码可以生成textareas(具有不同的id),以及允许格式化textareas中的文本的代码。当textarea中的文本以粗体显示时,它需要保持这样,当我生成第二个textarea并加粗时,它也需要保持粗体。这是:

<button id="bold">B</button>
<button id="add_txt">Add txtarea</button> 

<div id="vk_main">


</div>

var c = 0;
$.activeEl = $();

$('#add_txt').on('click', function() {
    var $div = $('<textarea id="ta_' + (c) + '">Text here.</textarea>');
    $('#vk_main').append($div);
});

$("textarea").focus(function() {
    $.activeEl = $(this);
});

$("#bold").click(function() {
    $("textarea").css("font-weight", "");
    $.activeEl.css("font-weight", "bold");
});

工作示例:http://jsfiddle.net/JohnnyNT/qhjJs/

4 个答案:

答案 0 :(得分:4)

如果您更改了具有焦点的文字区域的样式,请尝试此http://jsfiddle.net/qhjJs/3/

答案 1 :(得分:3)

activeEl变量存在范围问题。尝试将它放在某个命名空间上,比如jQuery对象:

var c = 0;
$.activeEl = $();

$('#add_txt').on('click', function() {
    var $div = $('<textarea id="ta_' + (c) + '">Text here.</textarea>');
    $('#vk_main').append($div);
});

$("textarea").focus(function() {
    $.activeEl = $(this);
});

$("#bold").click(function() {
    $("textarea").css("font-weight", "");
    $.activeEl.css("font-weight", "bold");
});​

答案 2 :(得分:2)

试试这个:

$("textarea").live("focus",function() {
   $.activeEl = $(this);
});

$("#bold").click(function() {
    $.activeEl.css("font-weight", "bold");
});

http://jsfiddle.net/qhjJs/5/

答案 3 :(得分:1)

在为textarea绑定焦点事件时,该元素将不存在。

你应该这样做:

$("textarea").live('focus', function() {
    activeEl = $(this);
});

http://jsfiddle.net/YqvWg/