Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как поставить проверку условия единожды? (https://javascript.ru/forum/jquery/38456-kak-postavit-proverku-usloviya-edinozhdy.html)

Dimaz 02.06.2013 20:17

Как поставить проверку условия единожды?
 
Для каждого обработчика происходит одна и та же проверка. Можно ли сделать так, чтобы не писать проверку для каждого события, а написать единожды?
В реальном коде у меня вообще 3 обработчика стоит в методе on(). И для каждого приходится писать эту проверку.
$('p').on({mouseenter:function(){
if($('b').text()) return;
//какой-то код
},mouseleave:function(){
if($('b').text()) return;
//какой-то код
}
});

mta88 02.06.2013 20:31

function ff() {
  if($('b').text()) return;
  //какой-то код
}
$('p').on({mouseenter: ff, mouseleave: ff});


так не работает что-ли?

Dimaz 02.06.2013 20:38

А прямо в методе on() сделать нельзя? Что-то вроде этого, только, чтобы работало.
$('p').on(if($('b').text()) return;
{mouseenter:function(){
...

Deff 02.06.2013 20:55

Dimaz,
Ваши вопросы - для экстрасенсов - выложите минимальный HTML и поясните смысл проверок и событий

рони 02.06.2013 20:59

Dimaz,
Вариант )))
$('p').on("mouseenter mouseleave", function (event) {
    if ($('b').text()) return;
    var eventfunction = {
        mouseenter: function () {
            alert("mouseenter") //какой-то код

        },
        mouseleave: function () {
            alert("mouseleave") //какой-то код

        }
    }
    eventfunction[event.type]()
});

Dimaz 02.06.2013 21:01

Цитата:

Сообщение от Deff (Сообщение 254123)
Dimaz,
Ваши вопросы - для экстрасенсов - выложите минимальный HTML и поясните смысл проверок и событий

Зачем? Смысл проверок есть. Вопрос в том, можно ли написать проверку один раз для всех событий. Я даже специально упростил код, чтобы вы не отвлекались на лишние действия в моем коде.

mta88 02.06.2013 21:02

ну за 4 года можно было и понять, как работают функции и замыкания

$('p').on(
(function() {
  function ff() {
    if($('b').text()) return;
    //какой-то код
  }
  return {mouseenter: ff, mouseleave: ff};
})()
);

Dimaz 02.06.2013 21:23

Всем спасибо за ответы.


Часовой пояс GMT +3, время: 14:41.