2

私がしていること

  • 現在、複数の入力と1つのテキストエリアを持つフォームがあります。
  • テキストエリアのすぐ上にdivスマイリーと呼ばれるものがあります
  • このdivにはクリック可能なスマイリーが含まれています

HTML

<form>
    <input name="example-1" type="hidden" value="spongebob" />
    <input name="example-2" type="hidden" value="gary"  />

    <div id="smilies">
        <div id="smilies-box">
            <img src="http://example.com/smilies/smile.gif" title=":)" />
        </div>
    </div>

    <textarea name="example-3"></textarea>

    <button>Post</button>
</form>

私がやろうとしていること

私の目的は、の画像をクリックしたときに、その画像のタイトルをすぐ下#smilies-boxに挿入することです。textarea

現在、次のjQueryを試していますが、textarea?が見つかりません。

jQuery

$(document).on("click", "#smilies-box img", function(){
    $(this).closest("textarea").val($(this).attr("title"));
});

私は何が間違っているのですか?

4

3 に答える 3

3

closest()DOM階層を上に移動するためのものであり、全体または周囲ではありません。あなたが探していると思われるものはnextUntil().parent()

あなたが本当に空想を得たいならば、あなたは多分あなたのためにこのような何かを働かせることができます:

$(document).on("click", "#smilies-box img", function(){
    $(this).closest(":has(textarea)").children().has(this).nextUntil('textarea').val($(this).attr("title"));
});
于 2012-10-23T01:15:26.807 に答える
1

.closest()は、セレクターに一致する最も近い親を取得します。代わりに、ティータエリアのあるフォームを探してください。このような:

$(document).on("click", "#smiles-box img", function() {
   $this = $(this);
   $("textarea[name='example-3']", $this.closest("form"))
      .val($this.attr("title"));
});
于 2012-10-23T01:17:38.670 に答える
0

私は次のようにターゲットテキストエリアを取得することができました:

var targettextarea = $(this).parent().parent().parent().children('textarea');
于 2012-10-23T02:17:09.193 に答える