替代:最后一个选择器来选择正确的div

时间:2012-07-11 22:56:10

标签: jquery

我有几个在上传文件后动态生成的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,但只添加一个刚创建的类。

我可以使用:最后一次我只上传一个,但如果我同时选择多个,它只适用于该组中的最后一个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?

1 个答案:

答案 0 :(得分:1)

重复的ID是问题的一部分,请尝试将它们更改为类名或唯一值。

另一部分是:

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

...在第一个,唯一的.uploadifive-queue-item元素中选择最后一个(也是唯一的)#uploadifive-fileupload-queuehttp://jsfiddle.net/aLRhL/2/

所以dupe id和错误的选择器都是问题所在。请改为尝试此操作,将id="inputs"更改为class="inputs"并使用:

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

...并确保修复其余的重复ID。

即使使用了重复ID,如果你有正确的选择器,它也会should work,但不要依赖它。