0

我有两段 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

4 回答 4

4

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

于 2012-05-09T11:32:28.407 回答
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");
});​
于 2012-05-09T11:28:15.720 回答
2

尝试这个:

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

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

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

于 2012-05-09T11:29:09.057 回答
1

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

你应该做这个:

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

http://jsfiddle.net/YqvWg/

于 2012-05-09T11:33:30.897 回答