我在动态创建的元素上有一个事件监听器:
<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>
答案 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>');