1

これは私の最初の質問ですが、このサイトは非常に役に立ちました。


これが問題です。繰り返し処理したいテキストエリアを含む、動的に生成された div がたくさんあります。ここでのこの関数は、私が入れた静的テスト div では機能しますが、動的に作成されたものでは機能しません。

$jQ('#upload_images_button').on('click', function() {
    var caption_list = [];

    $jQ('textarea.upload_image_caption').each(

    function() {
        caption_list.push($jQ(this).val());
        document.write($jQ(this).val());
    });
});

そして、これらの各 div の html は次のとおりです。

<div class="upload_image_temp_wrapper">                                 
    <div class="upload_wrapper">
        <img src="/images/test/test.jpg" />

        <div class="temp_image_hover_menu">
            <input type="checkbox" checked="checked" />
        </div>
    </div>
    <div class="upload_image_caption_wrapper">
        <textarea class="upload_image_caption" type="text" placeholder="Add a description..."></textarea>
    </div>
</div>

編集

よかった、私はばかのように感じます。

新しい div を生成していたスクリプトを振り返ると、テキストエリアにクラスを割り当てるのを忘れていることがわかりました...

とにかく、すべての助けに感謝します。すべての迅速な回答に感謝します!

4

2 に答える 2

0

実行しているように呼び出す.on()と、イベントがライブイベントとしてバインドされません(オプションのセレクター引数がないため)。つまり、実行時に存在する要素にのみバインドされます。呼び出し方法を変更する場合、具体的にはクリックを代わりに.on()バインドする場合は、ボタンでライブになるようにイベントを変更できます。body#upload_images_button

$jQ('body').on('click', '#upload_images_button', function() {} );

また、#upload_images_buttonページに複数のボタンがあるかどうかはわかりませんが、IDは一意である必要があるため、これらの要素が複数ある場合は、IDの代わりにクラスを使用してください。

于 2012-06-22T04:00:10.887 に答える
0

コードは正常に動作します。あなたのエラーは別の場所にあります。例: http://jsfiddle.net/Buaja/

HTML

<button id="upload_images_button">Upload</button>
<button id="add-div">Add Div</button>

<div class="upload_image_temp_wrapper">                        
    <div class="upload_wrapper">
        <img src="/images/test/test.jpg" />

        <div class="temp_image_hover_menu">
            <input type="checkbox" checked="checked" />
        </div>
    </div>
    <div class="upload_image_caption_wrapper">
        <textarea class="upload_image_caption" type="text" placeholder="Add a description..."></textarea>
    </div>
</div>​

JS

$jQ('#upload_images_button').on('click',
    function(){
        var caption_list = [];

        $jQ('textarea.upload_image_caption').each(
            function(){
                caption_list.push($jQ(this).val());
                console.log($jQ(this).val());
            });     
    }
);

// Add divs dynamically
$jQ('#add-div').on('click', function() {
   $jQ(document.body).append($jQ($jQ(".upload_image_temp_wrapper")[0]).clone());
});

ノート

  • ページがロードされた後に呼び出されると、ドキュメント内のすべてを上書きする document.write を使用しないでください。
于 2012-06-22T04:14:53.290 に答える