2014-09-29 2 views
0

Я имею эту страницу:функция OnClick() не работает с параметром 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>

+1

есть причина, что вы используете JS 'onclick' и не писать' .click (function() {}) 'в скрипте? также, посмотрите на эту ссылку, это поможет много => http://learn.jquery.com/using-jquery-core/document-ready/ –

+0

@AminJafari Да, .click (function() {} doesn Кажется, что я работаю для IE8/9, поэтому я перехожу к javascript-версии запуска. –

+0

@LanceShi, Try $ ('# file'). focus(), если вы хотите открыть диалоговое окно файла. –

ответ

2

Если ваша проблема совместима, вы пробовали что-то вроде this fiddle?

в основном то, что сказал Ману Zi с:

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) 
+0

Для меня это лучший ответ, поскольку он решает мою проблему. Я все еще борюсь с другой проблемой в этом файле, которая является файлом api, не поддерживает ie8/9, но это еще одна история. –

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

, не забудьте добавить готовый документ так же, как и –

+0

да, вы можете добавить это тоже –

+0

, если вы не добавите документ в готовность, я выиграл Не работай. –

1

Вы можете объявить функцию что-то вроде этого:

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

и HTML:

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

и обратите внимание, что вы должны начертить значок курсора для этого диапазона, в противном случае у пользователя нет визуального намека на то, что он может щелкнуть по нему.

2

ниже кода есть брекеты в неправильном месте. Вот почему он не работает с (JQuery)

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

Это sholud быть так:

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

Спасибо за этот ответ, Шив. Он работает так же, как я удалил jQuery. Диалог открывается гладко, но файл не загружается. Поэтому я догадываюсь, что параметр все еще не передан. –

+0

Жаль, что я не заметил, что jQuery на самом деле чувствителен к регистру. После того, как я изменил его, он отлично работает с оригинальными материалами, но он по-прежнему не работает для моего события onclick(). Я попробую больше, хотя. –

+0

@LanceShi: вставьте код, который вы написали для onclick, и повысьте, если вышеупомянутый anwser помогает –