Страница редактирования сообщения Wordpress перезагружается при нажатии кнопки JS в пользовательском метабоксе

У меня есть собственный метабокс для всех веб-страниц редактирования и публикации. Этот метабокс содержит таблицу, каждая строка которой содержит тег изображения и кнопку редактирования и удаления, чтобы удалить это изображение или обновить его из медиатеки. Теперь,

Когда я нажимаю кнопку «Удалить», выполняется код js:

jQuery('#delete_image').on('click',function(){
$(this).closest('tr').remove();
});

Но когда я нажимаю кнопку удаления в метабоксе, страница перезагружается вместо удаления строки. Пожалуйста, помогите, как подойти к этому.

Также пробовал:

  • event.preventDefault(), но без изменений в поведении.
  • Отключение всех плагинов (я использую хром)

person zeetit    schedule 28.08.2016    source источник


Ответы (1)


возможно, событие уже находится в этом элементе, попробуйте с .off удалить другого слушателя и вернуть false, чтобы остановить распространение.

jQuery('#delete_image').off().on('click',function(){
    $(this).closest('tr').remove();
    return false
});
person bormat    schedule 28.08.2016
comment
спасибо bormat .. попробовал это, но страница все еще перезагружается .. также пытался изменить идентификатор кнопки, но безуспешно - person zeetit; 28.08.2016
comment
Если вы не добавите слушателя, я полагаю, ничего не произойдет, но вы можете подтвердить это. - person bormat; 28.08.2016
comment
можете ли вы попробовать эти 2 альтернативы: jQuery('#delete_image').off().on('click',function(){ var $tr = $(this).closest('tr'); if(!$tr [0]) alert('tr не найден'); $tr.remove(); return false; }); и jQuery('#delete_image').off().on('click',function(){ var $tr = $(this).closest('tr'); if(!$tr[0]) alert( 'tr не найден'); $tr.hide(); вернуть ложь; }); - person bormat; 28.08.2016
comment
почему вы используете jQuery вместо $, если вы используете $ в слушателе, попробуйте только с jQuery? - person bormat; 28.08.2016
comment
Потому что там написано $ не найдено. Что ж, спасибо за ваше время и помощь ... но верхние решения не сработали - person zeetit; 28.08.2016
comment
Да, но вы не отвечаете, что произойдет, если вы не добавите слушателя, страница все еще перезагружается? можете ли вы поместить предупреждение в свой слушатель в конце, чтобы увидеть, выполняется ли код - person bormat; 28.08.2016
comment
привет bormat, если вы не добавите слушателя, он все еще перезагружается. - person zeetit; 28.08.2016
comment
вы используете id, потому что работает только один раз, подумайте об использовании класса, или не лучшая альтернатива - jQuery(* #delete_image).off().on('click',function(){ jQuery(this).closest('tr' ).remove();alert();вернуть false;}); если у вас нет предупреждения, селектор имеет значение false. - person bormat; 29.08.2016
comment
проверьте селектор в консоли jQuery(* #delete_image) - person bormat; 29.08.2016
comment
дает [тип ввода = идентификатор отправки = значение удаления_изображения = удалить] - person zeetit; 29.08.2016
comment
если вы нанесете свой мусс на результат, элемент будет выделен в хроме, и вы можете проверить, что это тот, который вы хотите. вы не говорите мне, если заменить ваш селектор на jQuery (* #delete_image) решить проблему - person bormat; 29.08.2016
comment
jQuery('* #delete_image').off().on('click',function(e){ $(this).closest('tr').remove();e.preventDefault(); return false; } ); - person bormat; 29.08.2016