Как пересилить обработчик клика?
Здравствуйте!
Есть вот такой html: <div class="btn-toolbar" id="toolbar"> <div class="btn-wrapper" id="toolbar-delete"> <button onclick="if (document.adminForm.boxchecked.value == 0) { alert(Joomla.JText._('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST')); } else { if (confirm('Delete selected files?')) { Joomla.submitbutton('fsdelete.deleteFSSelected'); } }" class="btn btn-small"> <span class="icon-delete"></span> Delete selected files</button> </div> <div class="btn-wrapper" id="toolbar-delete"> <button onclick="Joomla.submitbutton('fsdelete.deleteFSAllFiles');" class="btn btn-small"> <span class="icon-delete"></span> Delete all files from FS</button> </div> <div class="btn-wrapper" id="toolbar-help"> <button onclick="Joomla.popupWindow('http://siteforhelp.ru', 'Help', 700, 500, 1)" rel="help" class="btn btn-small"> <span class="icon-question-sign"></span> Help</button> </div> <div class="btn-wrapper" id="toolbar-options"> <button onclick="location.href='index.php?option=com_config&view=component&component=com_vm3delpics&path=&return=aHR0cDovL2xvY2FsaG9zdC9hc3UxNzAzMjIvYWRtaW5pc3RyYXRvci9pbmRleC5waHA%2Fb3B0aW9uPWNvbV92bTNkZWxwaWNzJnZpZXc9ZnNkZWxldGU%3D';" class="btn btn-small"> <span class="icon-options"></span> Options</button> </div> </div> Пытаюсь с помощью подключаемого js-фала с кодом: jQuery("#toolbar > #toolbar-delete:nth-of-type(1)").click(function (e) { e.preventDefault(); alert("Here we are!"); }) сделать так, чтобы первым по клику на первую кнопку реагировал мой обработчик. Не получается :) В чем ошибка? Скажите пожалуйста. |
кажется я button забыл.
Такой код тоже не срабатывает: jQuery("#toolbar > #toolbar-delete:nth-of-type(1) .btn.btn-small").click(function (e) { e.preventDefault(); alert("Here we are!"); }) |
borus, ИД должен быть уникальным на странице...
|
Цитата:
|
урать все лишнее
jQuery(".btn-small").click(function (e) { e.preventDefault(); alert("Here we are!"); }); js в html коде плохая практика |
ksa,
сделал #toolbar-delete уникальным, но это пока не помогло :) |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div class="btn-toolbar" id="toolbar"> <div class="btn-wrapper" id="toolbar"> <button onclick="if (document.adminForm.boxchecked.value == 0) { alert(Joomla.JText._('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST')); } else { if (confirm('Delete selected files?')) { Joomla.submitbutton('fsdelete.deleteFSSelected'); } }" class="btn btn-small"> <span class="icon-delete"></span> Delete selected files</button> </div> <div class="btn-wrapper" id="toolbar-delete"> <button onclick="Joomla.submitbutton('fsdelete.deleteFSAllFiles');" class="btn btn-small"> <span class="icon-delete"></span> Delete all files from FS</button> </div> <div class="btn-wrapper" id="toolbar-help"> <button onclick="Joomla.popupWindow('http://siteforhelp.ru', 'Help', 700, 500, 1)" rel="help" class="btn btn-small"> <span class="icon-question-sign"></span> Help</button> </div> <div class="btn-wrapper" id="toolbar-options"> <button onclick="location.href='index.php?option=com_config&view=component&component=com_vm3delpics&path=&return=aHR0cDovL2xvY2FsaG9zdC9hc3UxNzAzMjIvYWRtaW5pc3RyYXRvci9pbmRleC5waHA%2Fb3B0aW9uPWNvbV92bTNkZWxwaWNzJnZpZXc9ZnNkZWxldGU%3D';" class="btn btn-small"> <span class="icon-options"></span> Options</button> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> jQuery("#toolbar-delete .btn-small").click(function (e) { e.preventDefault(); alert("Here we are!"); }); </script> </body> </html> |
j0hnik,что-то не срабатывает. #toolbar-delete уже уникальный. Может быть дело в том, что в js-файле есть ещё код другой и я не правильно всё расставил по местам?
Вот полный код файла: jQuery( document ).ready(function() { var time_limit = 25;//временной лимит(сек) на ответ сервера var i = 0; var go = 1;//признак того, что нужно продолжать считывать информацию о файлах var from = 0;//с какого файла по порядку начинаем проверять var read_cnt = 3;//число проверяемых файлов var request = function(){ jQuery.getJSON('index.php?option=com_vm3delpics&task=fsdelete.read&format=json' , { data: { "time_limit":time_limit, "from":from, "read_cnt":read_cnt } }) .always(function(r) { var start = new Date().getTime(); if (!r.success && r.message){ alert(r.message); } if (r.messages){ Joomla.renderMessages(r.messages); } if (r.data){ //debugger; var elapsed = new Date().getTime() - start; //alert(elapsed); if(elapsed/1000 - 0.5 < time_limit){ read_cnt = r.data.read_cnt+1; } else{ if(r.data.read_cnt > 1) read_cnt = r.data.read_cnt-1; else alert("Слишком медленный ответ сервера! Не могу уменьшить число считываемых файлов"); } from = r.data.from + r.data.read_cnt; //отображение найденных файлов var tbl = jQuery("#fsscanres")[0]; var rws = tbl.rows; var lst = rws[rws.length - 2]; var cls = lst.cells.length; var rows_length = rws.length; for (var key in r.data.files) { i++; var ro = tbl.insertRow(rws.length - 1); for (var j = 0; j < cls; j++){ var ce = ro.insertCell(-1); switch(j){ case 0 : ce.innerHTML = rows_length + i - 2; break; case 1 : ce.innerHTML = '<input type="checkbox" id="cb0" name="cid[]" value="'+ r.data.files[key]["file_url"] + '" onclick="Joomla.isChecked(this.checked);">'; break; case 2 : ce.innerHTML = r.data.files[key]["file_url"]; break; } } } i = 0; } if(r.data.go) request(); }); } request(); }); jQuery("#toolbar-delete .btn-small").click(function (e) { e.preventDefault(); alert("Here we are!"); }); |
Цитата:
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='https://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ $('button').each(function(){ var one=this.onclick; this.onclick=null; $(this).click(function(){ two(); one(); }); }); function two(){ alert(2); }; }); </script> </head> <body> <button onclick='alert(1)'>Test</button> </body> </html> |
Цитата:
Т.ч. остается только просто поменять местами сами вызовы функций... |
Часовой пояс GMT +3, время: 00:29. |