Onclick()函数不能与JQuery参数传递一起使用

时间:2014-09-29 05:42:49

标签: jquery

我有这个页面:

<html>
    <head>
    </head>
    <body>
        <div id="uploadBox">
            <div id="uploadarea">
                <div id="dragandrophandler">Drag and Drop Files Here</div>      
                    <input style='display:none;' type="file" name="file" id="file" />
                    <span onclick="$('#file').click();">click it</span>
                <div id="status1"></div>
            </div>
        </div>

    <script src="JQueryJS.js"></script>
    <script>

(function (){
...
//closes and passes the jQuery var into immediate function
}(jQuery))
    </script>
    </body>
</html>

此页面是其他人编写的现有代码。并且onclick事件无效。它继续抛出异常。但是,如果我删除底部的(JQuery),那么它可以正常工作。所以我只是想知道(JQuery)实际上做了什么吗?我对jQuery很新,所以我不确定它是如何工作的。我没有看到任何其他代码引用它。我删除它是否安全?

----

(function() {
  ...
  //closes and passes the jQuery var into immediate function
}(jQuery))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="uploadBox">
  <div id="uploadarea">
    <div id="dragandrophandler">Drag and Drop Files Here</div>
    <input style='display:none;' type="file" name="file" id="file" />
    <span onclick="$('#file').click();">click it</span>
    <div id="status1"></div>
  </div>
</div>

4 个答案:

答案 0 :(得分:3)

更改您的代码

<html>
    <head>
    </head>
    <body>
        <div id="uploadBox">
            <div id="uploadarea">
                <div id="dragandrophandler">Drag and Drop Files Here</div>      
                    <input style='display:none;' type="file" name="file" id="file" />
                    <span id="clickHere"">click it</span>
                <div id="status1"></div>
            </div>
        </div>

<script>
$( "#clickHere" ).click(function() {
  alert( "Handler for .click() called." );
});
</script>

答案 1 :(得分:2)

如果兼容性是您的问题,您是否尝试过类似this fiddle的内容?

基本上是马努兹所说的:

function clickme(){
    document.getElementById('file').click();
}

此外,如果您确实想要使用封装:

(function (){
...
//closes and passes the jQuery var into immediate function
}(jQuery))

应该是

(function (){
...
//closes and passes the jQuery var into immediate function
})(jQuery)

答案 2 :(得分:2)

下面的代码在错误的地方有大括号。这就是为什么它不使用(jquery)

(function() {
  ...
  //closes and passes the jQuery var into immediate function
}(jQuery)) // here it should be passed to self invoking function

它是这样的:

(function() {
  ...
  //closes and passes the jQuery var into immediate function
})(jQuery)

答案 3 :(得分:1)

你可以声明一个像这样的函数:

$(document).ready(function() {
    function fileAction() {
       alert('Hello File');
    };
});

和html:

<span onclick="fileAction();">click it</span>

并注意您必须为此范围设置光标图标的样式,在其他情况下,用户没有可以单击此处的视觉提示。