Подтвердить что ты не робот

Jquery - функция внутри функции $(document).ready

Правильно ли создавать функции внутри

$(document).ready(function() {

так:

$(document).ready(function() {
     function callMe() {

     }
 });

Функция внутри .ready() не должна вызывать до того, как dom готов, и событие внутри ready() запускается.

Просто немного разъяснить - вот код, который иллюстрирует проблему:

$(function() {
    var ind = 0;

    // some event is executed and changes the value of the ind

    // another event which affects the ind variable

    // and another one - after this event we call our function


    // there another event - and we call our function again

Функция, которую мне нужно вызвать, нуждается в обновленном значении переменной ind, которую, я думаю, я могу передать как параметр, но есть ли лучший способ сделать это?

Кроме того, еще одна важная вещь заключается в том, что рассматриваемый function() может также изменить значение переменной ind - например, увеличивая ее (ind++).

4b9b3361

Ответ 1

Да, вы можете это сделать, это просто вопрос объема; если вам нужно только получить доступ к callMe() из $(document).ready(function() { }), то это прекрасно, чтобы поместить туда функцию, и предлагает некоторые преимущества архитектуры, потому что вы не можете получить доступ к функции вне этого контекста. Если вам нужно использовать функцию callMe() вне документа, хотя вам нужно определить функцию callMe() вне этого контекста.

function callMe() {
  // Do Something
}

$(document).ready(function() {
  callMe();
});

UPDATE

На основе вашего разъяснения у вас есть два варианта:

1) Переменная DECLARE вне ready(), но затем определите переменную внутри ready()

var someVariable;
function callMe() {
  someVariable++;
  alert(someVariable);
}

$(document).ready(function() {
  someVariable = 3;
  callMe(); // Should display '4'
});

2) В пределах готовности определите переменные, используя window.yourVariable = 'whatever';

Ответ 2

Это также сработает.

$(document).ready(function() {
      callMe = function() {
            alert('hello');
      }
});

callMe();

Если вы используете

 var callMe = function () { ... }

Он может не работать, и вы можете получить сообщение об ошибке "функция undefined"

Ответ 3

Когда вы создаете функцию внутри $(document).ready, она гарантирует, что она не будет вызываться до загрузки документа. Конечно, его можно вызывать только из самого обработчика события (где-то позже в обработчике событий).

Другими словами, то, что вы пытаетесь сделать, является допустимым (хотя и не обязательно желательным), вам нужно больше узнать о том, что вы пытаетесь выполнить).

Ответ 4

Вы можете сделать так:

$(document).ready(function(){

    var callMe = function(){
       //enter code here
    }

    $(".my-class").on("click", function(){
       callMe();
    });

});

Итак, вам не нужно ставить функцию вне документа, и код становится сгруппированным и более организованным.;)

Ответ 5

Вероятно, лучше назвать функцию прямо так:

$(document).ready(myFunction);

function myFunction() {

   // Your code here

}

Ответ 6

Это определенно законно. Вопрос в том, почему вы хотите это сделать? Вероятно, привязать область действия к области готовности и не привязать ее глобально к объекту окна. Но это то, что вы действительно хотите? Я предлагаю взглянуть на закрытие функций в javascript и как он обрабатывает область видимости. чтобы помочь выяснить его необходимость...

Ответ 7

Посмотрите, можете ли вы устранить необходимость использования document.ready, перемещая тэг в нижнюю часть html файла. Это должно сделать вещи намного проще. В противном случае объявите функцию вне области document.ready и просто вызовите ее в области действия document.ready.