Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.10.2016, 22:43
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

Выполнить функцию один раз (убрать обработчик)
Есть слайдер с ползунком.
$("#slider-range").slider({
      range: "min",
      min: 0,
      max: 5900,
      value: 0,
      slide: function( event, ui ) {
	      if(ui.value > 4600) {typeds();}
	      }
    });

При значении > 4600 выполняется функция typeds.
Как выполнить функцию typeds "единоразово" или открепить от нее обработчик.
Проблема в том, что функция typeds() выполняется каждый раз, как значение > 4600.
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2016, 22:47
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

$("#slider-range").slider({
      range: "min",
      min: 0,
      max: 5900,
      value: 0,
      flag: true,
      slide: function( event, ui ) {
	      if($(this).slider('option', 'flag') && ui.value > 4600) {$(this).slider('option', 'flag', false); typeds();}
	      }
    });

поправил код

Последний раз редактировалось Vlasenko Fedor, 15.10.2016 в 23:26.
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2016, 22:59
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

Poznakomlus, не работает
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2016, 23:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

k_DizeL,
перенесите строку 6 в строку 0 var flag=true;

Последний раз редактировалось рони, 15.10.2016 в 23:24.
Ответить с цитированием
  #5 (permalink)  
Старый 15.10.2016, 23:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
var falg=true
Случаем не flag?
Ответить с цитированием
  #6 (permalink)  
Старый 15.10.2016, 23:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

laimas,
ок
Ответить с цитированием
  #7 (permalink)  
Старый 15.10.2016, 23:24
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Поправил код
или так
$("#slider-range").slider({
    range: "min",
    min: 0,
    max: 5900,
    value: 0,
    slide: function (event, ui) {
        var flag = this.flag || false;
        if (!flag && ui.value > 4600) {
            this.flag = true;
            typeds();
        }
    }
});

Последний раз редактировалось Vlasenko Fedor, 15.10.2016 в 23:37.
Ответить с цитированием
  #8 (permalink)  
Старый 16.10.2016, 00:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

А правильней всего как-то так:
$("#slider-range").slider({
      range: "min",
      min: 0,
      max: 5900,
      value: 0,
      slide: function( event, ui ) {
          if(ui.value > 4600) {
              typeds();
              $(this).slider( "option", "slide", null );
          }
      }
});
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 16.10.2016, 00:55
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

Aetae, в таком случае перестает работать функция ползунка.Poznakomlus, да действительно с var заработало, спасибо.
Ответить с цитированием
  #10 (permalink)  
Старый 16.10.2016, 00:56
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

если сделать еще так, то запретим дальнейшее изменение ползунков
$("#slider-range").slider({
      range: "min",
      min: 0,
      max: 5900,
      value: 0,
      slide: function( event, ui ) {
          if(ui.value > 4600) {
              $(this).slider( "option", "slide", function () {
                return false;
            });
            typeds();
          }
      }
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отработать два события за один раз. andreydial Общие вопросы Javascript 10 08.12.2014 23:14
не удается убрать обработчик событий. mitiya Общие вопросы Javascript 0 08.09.2012 21:18
Выполнить функцию 1 раз svs Общие вопросы Javascript 1 20.06.2012 13:33
Выполнить функцию заранее неизвестную Neokortex jQuery 2 13.02.2012 12:41
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37