0

ファイルのアップロード後に動的に生成される div がいくつかあります。ファイルをアップロードするたびに、次の形式で div が作成されます。

<div id="uploadifive-fileupload-queue" class="uploadifive-queue">
    <div class="uploadifive-queue-item complete" id="uploadifive-fileupload-file-0">

        <div id="inputs">

            some text

        </div>
    </div>
</div>

アイテムがアップロードされるたびに、uploadifive-queue-item クラスの ID が増分され、uploadifive-fileupload-file-0、uploadifive-fileupload-file-1、uploadifive-fileupload-file-2 などになります。

私がやろうとしているのは、にクラスを追加することですが、#inputs作成したばかりのものだけです。

一度に 1 つだけアップロードする場合は :last を使用して実行できますが、同時に複数を選択すると、そのグループの最後の div にのみ適用されます。

私が探しているのは、 $(this) またはその一意の div をターゲットにする方法のようなものです。

  $('#fileupload').uploadifive({
                'buttonClass'  : 'btn btn-primary',
                'buttonText'   : 'Select Thumbnail',
                'dnd' : false,
                'fileSizeLimit' : 1000,
                'method' : 'post',
                'simUploadLimit' : 1,
                'uploadScript' : './upload/',
                'onUploadComplete'  : function(file, data) {
                    $("#uploadifive-fileupload-queue .uploadifive-queue-item:last").find('#inputs').addClass('alert-error');
                }

            });

#fileuploadはフォームの名前です。HTML は次のとおりです。

<form id="fileupload">
    <input type="file" name="userfile" size="20" />
</form>

div は直下に追加され、同じコンテナー内にあります。

正しいdivを選択するにはどうすればよいですか?

4

1 に答える 1

1

ID の重複は問題の一部です。ID をクラス名または一意の値に変更してみてください。

他の部分は次のとおりです。

$("#uploadifive-fileupload-queue .uploadifive-queue-item:last")

...最初の一意の要素.uploadifive-queue-itemの最後の(そして唯一の)要素を選択します:http://jsfiddle.net/aLRhL/2/#uploadifive-fileupload-queue

そのため、重複した ID と誤ったセレクターが問題です。代わりにこれを試して、次のように変更id="inputs"class="inputs"て使用してください。

$(".uploadifive-queue:last .inputs").addClass('alert-error');

...残りの重複 ID を必ず修正してください。

重複した ID を使用しても、正しいセレクターがあれば機能するはずですが、それに依存しないでください。

于 2012-07-11T23:06:26.180 に答える