Добрый вечер. Откровенно говоря только начинающий в JS, но возникла задача написать нехитрую штуку.
Вопрос в следующем, как после удаления события с кнопки, запустить другую функцию.
Сейчас у меня имеется вот такая конструкция которая работает ровно до Анбинда события:
Мне надо как только заменился текст на кнопке, сделать так чтобы кнопку больше нельзя было нажать, но при этом далее отработала бы функция Add2Set и вывелся бы Алерт.
Как такое провернуть? Уже пытался вызывать функция сразу после анбинда. Собственно ниже список того что уже пробовал:
1. просто вызывал ниже функцию
2. Пробовал через BX.delegate()
3. Читал документацию там есть примеры Пробовал как в самом нижнем примере:
Прочитал схожую документацию по jquery, понял что функция событие передаваемая третьим параметром это то что не будет в дальнейшем запускаться. Незнаю актуально ли это для битрикса
В общем прошу помощи в этой неразрешимой для меня задаче. Только начинаю учится, хочу постичь суть. Но перечитал все что только можно, без совета уже загнал себя в тупик... Надеюсь написал понятно.
Заранее спасибо всем откликнувшимся.
Вопрос в следующем, как после удаления события с кнопки, запустить другую функцию.
Сейчас у меня имеется вот такая конструкция которая работает ровно до Анбинда события:
| Код |
|---|
(function (window) {
window.JSSets = function (arParams) {
this.containerId = '';
this.addButtonId = '';
this.product = {
id: 0,
name: '',
img: '',
price: 0,
};
this.obProduct = null;
this.obAddButton = null;
this.obSetTableRow = null;
this.emptyTableRow = '#empty_row';
if ('object' === typeof arParams){
this.containerId = arParams.PRODUCT_CONTAINER_ID;
this.addButtonId = arParams.ADD_BUTTON_ID;
this.tableRowId = this.containerId + '_row';
this.product.id = arParams.PRODUCT.ID;
this.product.name = arParams.PRODUCT.NAME;
this.product.img = arParams.PRODUCT.SRC_IMG;
this.product.price = arParams.PRODUCT.PRICE;
this.product.article = arParams.PRODUCT.ARTICLE;
}
BX.ready(BX.delegate(this.Init, this));
}
window.JSSets.prototype.Init = function(){
this.obProduct = BX(this.containerId);
this.obAddButton = BX(this.addButtonId);
if(!!this.obAddButton){
this.prop = 1;
BX.bind(this.obAddButton, "click", BX.proxy(this.RenameAddButton, this));
}
if(this.obSetTableRow === null) {
this.obSetTableRow = $(this.emptyTableRow);
}
}
window.JSSets.prototype.Add2Set = function(){
alert(this.prop);
}
window.JSSets.prototype.RenameAddButton = function() {
BX.unbind(this.obAddButton, 'click', BX.proxy(this.RenameAddButton, this));
$(this.obAddButton).text('Добавлен');
}
})(window);
|
Как такое провернуть? Уже пытался вызывать функция сразу после анбинда. Собственно ниже список того что уже пробовал:
1. просто вызывал ниже функцию
| Код |
|---|
BX.unbind(this.obAddButton, 'click', BX.proxy(this.RenameAddButton, this));
$(this.obAddButton).text('Добавлен');
this.Add2Set();
|
| Код |
|---|
BX.unbind(this.obAddButton, 'click', BX.proxy(this.RenameAddButton, this));
$(this.obAddButton).text('Добавлен');
BX.proxy(this.Add2Set, this));
|
| Код |
|---|
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, понял что функция событие передаваемая третьим параметром это то что не будет в дальнейшем запускаться. Незнаю актуально ли это для битрикса
В общем прошу помощи в этой неразрешимой для меня задаче. Только начинаю учится, хочу постичь суть. Но перечитал все что только можно, без совета уже загнал себя в тупик... Надеюсь написал понятно.
Заранее спасибо всем откликнувшимся.