jQuery显示不起作用

时间:2014-05-06 03:07:01

标签: javascript jquery

我试图展示跨度,但它不起作用。这是不起作用的代码:

<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>

2 个答案:

答案 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>

这必须有效