Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery显示不工作_Javascript_Jquery - Fatal编程技术网

Javascript jQuery显示不工作

Javascript jQuery显示不工作,javascript,jquery,Javascript,Jquery,我试图展示span,但它不起作用。这是不起作用的代码: <script> $(document).ready(function() { $('input[type="file"]').ajaxfileupload({ 'onStart': function() { //alert("myAlert"); $(this).siblings('span').show();

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

<script>
    $(document).ready(function() {
        $('input[type="file"]').ajaxfileupload({
           'onStart': function() {
                //alert("myAlert");
                $(this).siblings('span').show();
           }
        });
    });
</script>
为什么会这样?我使用插件:

编辑: 这是我的html代码:

<input type="file"/><br/>
<h1>test1</h1>
<span style="display: none;">test3</span>
<h2>test2</h2>

问题是,您的代码在DOM结构完成加载之前运行。这会导致脚本在访问span之前尝试更改span的样式,因此根本不做任何事情。要解决此问题,请将代码放在回调中,如下所示:

<script>
    $(document).ready(function() {
        $('input[type="file"]').ajaxfileupload({
           'onStart': function() {
                alert("myAlert");
                $(this).siblings('span').show();
           }
        });
    });
</script>
$(function() {
    $('input[type="file"]').ajaxfileupload({
       'onStart': function() {
            $(this).siblings('span').show();
       }
    });
});

这将使代码仅在加载所有内容后运行,这将确保您的脚本能够实际访问它需要显示的元素。当使用DOM时(基本上每次您都需要更改任何HTML元素),您需要将代码放入这样的回调函数中。

尝试直接引用span

<input type="file"/><br/>
<button>View Span</button>
<h1>test1</h1>
<span class="myspan" style="display: none;">test3</span>
<h2>test2</h2>
然后


这一定行得通

我无法想象警报与实际问题有任何关联。您可以发布HTML标记吗?这个问题似乎离题了,因为它缺少足够的信息来诊断问题。@War10ck我刚刚更新。发生这种情况是因为警报延迟了.show方法的运行时间。您只需将此代码放在load或DOMready事件的回调函数中。我已指定重新打开此问题,以便我能更完整地回答它。选择文件时是否刷新页面实际上我已将其放入脚本中,但不起作用..抱歉,我只是更新了我的question@Kun你能试着把代码$this.sillides'span'.show;在setTimeout的1毫秒内,如下所示:setTimeoutfunction{$this.sides'span'.show;},1;这可能会产生与警报相同的效果,不会出现阻塞性弹出窗口。谢谢。。这是可行的,但我有4个输入[type=file],所以我需要使用它来防止在每个输入[type=file]中显示span首先,您确定这是隐藏字段引用吗。在chrome中打印到控制台,例如console.logthis,然后通过在控制台中扩展其属性来查找当前隐藏字段。我认为这是隐藏字段引用。我试着把$this.hide;在$this.之前。兄弟姐妹的span.show;而且它的工作很好,会隐藏输入[type=file]…那么肯定会有一些问题。尝试使用$this.parent.find'span.show;您是在动态创建该范围,还是在回调时确保该范围存在。你能为这个做一把小提琴吗。
<script>
    $(document).ready(function() {
        $('input[type="file"]').ajaxfileupload({
           'onStart': function() {
                $('.myspan').show();
           }
        });
    });
</script>