使用jquery不工作选择div

时间:2016-09-26 16:37:39

标签: javascript jquery html

我在动态创建的元素上有一个事件监听器:

<script>
        $(document).on('change', '.inputfile', function() {
            var name = ($(this).val().split('\\').pop());
            selectFile(name);
        });
</script>

一旦选择了文件,我想附加一个显示文件名本身的段落。我的问题是jquery选择器不起作用:

function selectFile(filename) {
        alert(filename);
        var classes = $(this).closest('.inputgroup');
        $('classes').append('<p>'+filename+'</p>');
}

我想用class = inputgroup将段落附加到最近的div中,因为该类有几个div。 使用简单的$('.inputgroup').append('<p>'+filename+'</p>');即可,并创建段落。 这是HTML:

<div class="inputgroup">
   <label class="btn btn-default btn-info" style="margin-top: 8px">
         Browse <input type="file" style="display: none;" class="inputfile"/>
   </label>
   <button type="button" class="btn btn-outline-danger" onclick="myAjax()">Ok</button>
   <span id="remove_field" class="glyphicon glyphicon-remove" aria-hidden="true" style="vertical-align: middle"></span>
</div>

2 个答案:

答案 0 :(得分:5)

这一行

__name__ = a
__name__ = a
<function f at 0x000001EA101B7840>
__name__ = __main__
a.f is b.a.f? True

正在搜索名为&#34; class&#34;的元素 - 那不是有效的HTML元素。

我想你想要

$('classes').append('<p>'+filename+'</p>');

根据你的问题这一行

  

我想用class = inputgroup

将段落附加到最近的div中

但你应该把它直接放在事件处理程序中,否则$(this).closest('.inputgroup').append('<p>'+filename+'</p>'); 具有不同的含义

this

答案 1 :(得分:0)

在这行代码中

var classes = $(this).closest('.inputgroup'); $('classes').append('<p>'+filename+'</p>');

第一行为您提供了一个jQuery对象。您可以直接使用它来附加p标记。

正如在其他答案中已经提到的,您的第二行会查找名为classes的元素,该元素不存在。

因此,只需使用您拥有的Jquery对象并附加段落即可。如下所示

classes.append('<p>'+filename+'</p>');