<div class="edit" onclick="options(this)"> ...</div>
function options(obj){
$(obj).click(function (event){
if(event.target.closest('.glyphicon-pencil'))
edit(obj);
if(event.target.closest('.glyphicon-remove-circle'))
remove(obj);
if(event.target.closest('.translate'))
translate(obj);
$(obj).unbind('click');
});
}
$(obj).click(function (event)
внутри options? onclick
function options (obj) {
$(obj).prop("onclick", null);
obj.closest(".glyphicon-pencil") && edit(obj);
obj.closest(".glyphicon-remove-circle") && remove(obj);
obj.closest(".translate") && translate(obj);
};
function options (obj) {
obj.closest(".glyphicon-pencil") && edit(obj);
obj.closest(".glyphicon-remove-circle") && remove(obj);
obj.closest(".translate") && translate(obj);
};
click
на this блок. Если я ошибаюсь, поправьте меня пожалуйста.document.addeventlistener
на какой-то конкретный блок нельзя (комментарии подгружаются). При этом с каждым блоком нужно как-то взаимодействовать...const events = $._data($(obj)[0], 'events');
if(events==null)
"меню активировано или нет?". Вы крутите ленту и прицепить document.addeventlistener на какой-то конкретный блок нельзя (комментарии подгружаются).Кто сказал такое?
$(document).on('click', '.block_cmments .edit', function(e){
e.preventDefault();
let obj = e.target;
obj.closest(".glyphicon-pencil") && edit(obj);
obj.closest(".glyphicon-remove-circle") && remove(obj);
obj.closest(".translate") && translate(obj);
});
.block_cmments .edit
та самая кнопка на которой у вас висит функция onclick="options(this)"
. Эту функцию просто убрать.$(document)
.on('click', '.block_cmments-item .glyphicon-pencil', function(e){
e.prevenDefault();
let block = e.target.closest('.block_cmments-item');
block && edit(block);
return !1;
})
.on('click', '.block_cmments-item .glyphicon-remove-circle', function(e){
e.prevenDefault();
let block = e.target.closest('.block_cmments-item');
block && remove(block);
return !1;
})
.on('click', '.block_cmments-item .translate', function(e){
e.prevenDefault();
let block = e.target.closest('.block_cmments-item');
block && .translate(block);
return !1;
});
С делегированием просто ищете блок родитель от кнопки и передаёте его
onclick="options(this)"
. Эту функцию просто убрать
На чистом JS это чуть сложнее, а вот на jQuery это очень просто. Вы же используете jQuery судя по коду?
Где .block_cmments .edit та самая кнопка на которой у вас висит функция onclick="options(this)"
$(document).on('click', '.block_cmments', function(e){
e.preventDefault();
let obj = e.target;
obj.closest(".glyphicon-pencil") && edit(obj);
obj.closest(".glyphicon-remove-circle") && remove(obj);
obj.closest(".translate") && translate(obj);
});