Мне надо как только заменился текст на кнопке, сделать так чтобы кнопку больше нельзя было нажать, но при этом далее отработала бы функция Add2Set и вывелся бы Алерт.
Как такое провернуть? Уже пытался вызывать функция сразу после анбинда. Собственно ниже список того что уже пробовал:
BX.unbind(this.obAddButton, 'click', BX.proxy(this.RenameAddButton, this));
$(this.obAddButton).text('Добавлен');
BX.delegate(function(){
this.Add2Set();
}, this));
а также и вот так:
BX.unbind(this.obAddButton, 'click', BX.proxy(function(){
this.Add2Set();
}, this));
$(this.obAddButton).text('Добавлен');
Прочитал схожую документацию по jquery, понял что функция событие передаваемая третьим параметром это то что не будет в дальнейшем запускаться. Незнаю актуально ли это для битрикса https://ruseller.com/jquery?id=132
В общем прошу помощи в этой неразрешимой для меня задаче. Только начинаю учится, хочу постичь суть. Но перечитал все что только можно, без совета уже загнал себя в тупик... Надеюсь написал понятно.
А зачем для этого удалять обработчик, да еще внутри себя же? Храните признак нажатия в свойстве, например. Ну и если используете штатную библиотеку, зачем jQuery?
Не надо сверлить зубы через задний проход дрелью от Сваровски
Евгений Жуков написал: А зачем для этого удалять обработчик, да еще внутри себя же? Храните признак нажатия в свойстве, например. Ну и если используете штатную библиотеку, зачем jQuery?
Ну я думал сделать таким образом что если уже Сменилась надпись на Добавлен, чтобы если пользователь решить еще 3 раза нажать, то ничего не произошло бы, и вот пришла идея удалить событие клика.
Не могли бы показать пример как хранить признак нажатия в свойстве? Не силен пока настолько в этом((
Стандартную библиотеку пока только учу, вот и смешиваю пока с JQuery, буду переписывать в дальнейшем на стандартную библиотеку, по мере поступления знаний))
Благодарю) Я почему то представлял себе все намного сложнее))
Скажите а как мне теперь если у нас еще кнопка не изменена, передать обработку далее в функцию Add2Set через BX.delegate? Я вообще сколько не читал, несколько недопонимаю как она до конца работает и когда она срабатывает(( Документацию уже изсверлил всю))
Павел Разуваев написал: И если не затруднит, не могли бы пояснить в каких случаях использовать стоит BX.delegate/BX.proxy ? Мне бы для большего понимания.
В любом обработчике, где требуется не текущий контекст, а контекст объекта, которому принадлежит обработчик. Выражаясь простым языком - когда вам требуются данные или методы того экземпляра объекта, который содержит обработчик. Еще проще - если в обработчике есть хоть один this. И да, для обработчиков используйте BX.proxy, т.к. может возникнуть потребность его (обработчик) убрать (unbind).
Цитата
Павел Разуваев написал: А если рассматривать не особо примитивный вариант?
А если рассматривать рабочий вариант, необходимо признак нажатия выставлять (и надпись менять) в случае успешного выполения метода Add2Set (внутри этого метода) + добавить признак, что идет вызов Add2Set и повторно его вызывать не надо.
Не надо сверлить зубы через задний проход дрелью от Сваровски
Павел Разуваев написал: И если не затруднит, не могли бы пояснить в каких случаях использовать стоит BX.delegate/BX.proxy ? Мне бы для большего понимания.
В любом обработчике, где требуется не текущий контекст, а контекст объекта, которому принадлежит обработчик. Выражаясь простым языком - когда вам требуются данные или методы того экземпляра объекта, который содержит обработчик. Еще проще - если в обработчике есть хоть один this. И да, для обработчиков используйте BX.proxy, т.к. может возникнуть потребность его (обработчик) убрать (unbind).
Цитата
Павел Разуваев написал: А если рассматривать не особо примитивный вариант?
А если рассматривать рабочий вариант, необходимо признак нажатия выставлять (и надпись менять) в случае успешного выполения метода Add2Set (внутри этого метода) + добавить признак, что идет вызов Add2Set и повторно его вызывать не надо.
Спасибо большое за советы))
Касательно рабочего варианта. Если я правильно понял, мы признак нажатия выставляем уже непосредственно в Add2Set и именно в случае успешного добавления. А признак выполнения мы выставляем как то также как и признак нажатия, или с этим несколько сложнее?