我试图展示跨度,但它不起作用。这是不起作用的代码:
<script>
$(document).ready(function() {
$('input[type="file"]').ajaxfileupload({
'onStart': function() {
//alert("myAlert");
$(this).siblings('span').show();
}
});
});
</script>
但是当我把alert
放在它之前时会显示跨度,如下所示:
<script>
$(document).ready(function() {
$('input[type="file"]').ajaxfileupload({
'onStart': function() {
alert("myAlert");
$(this).siblings('span').show();
}
});
});
</script>
为什么会这样? (我使用插件:jquery.ajaxfileupload)
修改 这是我的HTML代码:
<input type="file"/><br/>
<h1>test1</h1>
<span style="display: none;">test3</span>
<h2>test2</h2>
答案 0 :(得分:0)
问题是您的代码在DOM结构加载完成之前运行。这会导致您的脚本在访问范围之前尝试更改范围的样式,因此它根本不会执行任何操作。要解决此问题,请将代码置于回调中,如下所示:
$(function() {
$('input[type="file"]').ajaxfileupload({
'onStart': function() {
$(this).siblings('span').show();
}
});
});
这将使代码仅在所有内容都加载后运行,这将确保您的脚本可以实际访问它需要显示的元素。使用DOM时(基本上每次需要更改任何HTML元素时),都需要将代码放在这样的回调函数中。
答案 1 :(得分:0)
尝试直接引用范围
<input type="file"/><br/>
<button>View Span</button>
<h1>test1</h1>
<span class="myspan" style="display: none;">test3</span>
<h2>test2</h2>
然后
<script>
$(document).ready(function() {
$('input[type="file"]').ajaxfileupload({
'onStart': function() {
$('.myspan').show();
}
});
});
</script>
这必须有效