2

私はテキストエリアを持っています。私がしたいのは、ユーザーがテキストエリアに集中して4emに成長するとき、ユーザーがテキストエリアに集中していない/ぼやけているときは、デフォルトの1emに戻すことです。

これが私がこれまでに持っているものです:

$('.comment_content').live('focus click', function() {
   $(this).addClass('grow');
}).live('blur', function() {
   $(this).removeClass('grow');
});

それでうまくいきましたが、ここに問題があります。ユーザーは、次のようなファイルをコメントに添付できます。

<textarea type="text" class="comment_content"> </textarea>
<div id="attachfile">attach file</div>

上記の jQuery の唯一の例外は、ユーザーがクリックしてファイルを添付した場合、removeClass を実行しないことです。

何か案は?

ありがとう

4

1 に答える 1

1

removeClass関数を約500ミリ秒のsetTimeoutコードブロックに配置します。attachfile要素に「active」のクラスがない場合にのみコードを起動します。次に、attachfile要素にイベントハンドラーを追加します。これにより、クリック時に「active」のクラスが追加されます。

$('.comment_content').live('focus click', function() {
   $(this).addClass('grow');
});

$("body").live("click focus", function(evt) {
    if (!$(evt.target).is('.grow, #attachfile'))
       $('.comment_content').removeClass('grow');
});

更新16/01/11

今朝の問題をよりよく理解し、次のjsFiddleを作成しました。http://jsfiddle.net/uc8Qv/

リッチ

于 2011-01-16T00:30:14.390 に答える