функция не вызывается, используя jquery .delegate - PullRequest
0 голосов
/ 24 марта 2012

Я хочу использовать jquery делегат для вызова функции, и это прекрасно работает:

$("body").delegate("div", "mouseover", function(){
alert("it works");
});

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

Но при таком написании я никогда не увижу предупреждение

function alertMe(){
alert("it works");
};

$("body").delegate("div", "mouseover", alertMe());

Ответы [ 4 ]

1 голос
/ 24 марта 2012

jQuery .delegate заменено методом .on .Я бы порекомендовал вам изменить свой код, чтобы использовать его.

function alertMe(){
    alert("it works");
}

$("body").on("mouseover", "div", alertMe);
//$("body").delegate("div", "mouseover", alertMe) -- old method
//Note the change in postion of selector and event
1 голос
/ 24 марта 2012

Отбросьте скобки при определении делегата.просто дайте имя функции

$("body").delegate("div", "mouseover", alertMe);
0 голосов
/ 24 марта 2012

Создать общий обработчик событий просто

function alertMe(event){
    //you also need to include the event object, for various actions like stopPropagation()
    alert("it works");
};

$("body").delegate("div", "mouseover", alertMe);
0 голосов
/ 24 марта 2012

лучше сделать это:

$("body").delegate("div", "mouseover", function(){
   alertMe();
   //plug more code down here
});

у него есть преимущества, в основном:

  • , если вы хотите, чтобы другие вещи выполнялись после события, просто добавьте его в
  • Вы можете вызывать больше функций в этой форме (вместо этой единственной alertMe())
...