1

每当我按下页面上的文件上传按钮时,它都会触发页面上存在的所有文件上传按钮,每个按钮都有相同的类,所以我尝试应用 $(this) 选择器来限制对一个文件上传窗口的响应。

HTML

        <div id="sectionInfo">
            <div id="sectionWrap">
                <div id="sectionInner">
                    <label class="inst head">Section 1</label>
                    <input class="textOver" type="text" name="sectionTitle1" value="<?php echo $title; ?>" placeholder="Section Title" onfocus="this.select();">
                    <label class="inst ib">Please enter any text you would like associated with the section.</label>
                    <textarea style="margin-top: 3px" name="sectionContent1" value="<?php echo $body; ?>" onfocus="this.select();" placeholder="Section Description"></textarea>
                    <label class="inst ib">Please upload the image associated with this section, .PNG required.</label>
                    <input type="file" style="visibility:hidden;" name="sectionImg1" class="upload" />
                    <input type="button" id="fileStyle" class="fSOver fileStyle" value="Upload Section Image!" />

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

这个块有多个实例化,站点管理员能够通过一些 javascipt 动态地将无限节点附加到页面,这就是我的问题所在。从可用性的角度来看,如果一个按钮单击为您的 30 个部分连续打开 30 个窗口,那将是一件令人讨厌的事情。

我现在的 JS 看起来像这样

    $(function(){
        $(document).on("click", '.fileStyle', function(){
           $('.upload').click();
        });
    });

我将如何仅提示目标按钮的文件上传对话框?

4

1 回答 1

1

尝试这个:

$(function()
{
    $(document).on("click", '.fileStyle', function()
    {
        $(this).siblings('.upload').click();
    });
});

或者

$(function()
{
    $(document).on("click", '.fileStyle', function()
    {
        $(this).prev().click();
    });
});
于 2013-09-05T21:56:31.400 回答