Всем доброго времени суток. решил я зделать голосовалку с выводом модального окна с результатом решил использовать jquery но затык на событии. ув гуру подскажите что не так. имею форму Код (Text): <form id='ajax-voite-form' action="script.php"> <button type="buttom" name='submit' class="btn btn-default btn-lg" > <span class="glyphicon glyphicon-thumbs-up"></span><em>Нравится</em></button> </form> и сам jquery Код (Text): <script type='text/javascript'> $('#ajax-voite-form').bind('click', function(){ alert('Вы нажали на элемент '); }); </script>
нет. alert не отрабатывает Добавлено спустя 3 минуты 48 секунд: <script type='text/javascript'> alert('Вы нажали на элемент '); $('#ajax-voite-form').bind('click', function(){ alert('Вы нажали на элемент '); }); </script> вынес alert отрабатыват поставил заглушку в action и скрипт отработал . теперь нужно зделать так чтобы вместо перехода по сылке action ана обрабатывалась в jquery и после было вызванно модальное окно с результаом исполнения.
type="buttom" Это во первых. А во вторых, если вы уже используете <button> нахера опять тип button? type="submit" а форме добавьте onsubmit="". HTML: Код (PHP): <form id='ajax-voite-form' action="script.php" onsubmit="return send(this)"> <button type="submit" name='submit' class="btn btn-default btn-lg" > <span class="glyphicon glyphicon-thumbs-up"></span><em>Нравится</em></button> </form> JavaScript: Код (PHP): fucntion send(form) { alert('Вы отправляете форму:'+form.id+' на адрес: '+form.action); return false; } А дальше делайте сериализацию формы и вперед...
Нашел код в котором говорится о том что браузер не будит переходить при клике но переход происходит . что не правильно в коде? jquery Код (Text): $(document).ready(function(){ $('a').bind('click',clickHandler); }); function clickHandler(eventObject) { eventObject.preventDefault(); alert($(eventObject.target).attr('href')); return false; } html Код (Text): <a href="http://google.com" id="tt">ссылка</a><br />
У меня не происходит, вот пруф - https://jsfiddle.net/rw55xt1y/. А у тебя происходит, потому что ты JQuery не подключил. У тебя в консоли, до кучи, при проверке этого кода стопудово сказано что-то про $ is undefined. Но отладка для слабаков, верно?
да даже если подключил - если сценарий выполняется до появления в доме нужной ветки - он выполняется впустую.
Это исключено, потому как там: Это значит, что все внутри этой конструкции будет выполнено только после сборки страницы. На фиддле, что я вбросил, для этого когда указано прописывание в head, то есть вообще заведомо до тела страницы. Работает, как видишь.
Ты не представляешь, как часто люди пытаются юзать JQuery и прочие разные мутулсы и прототайпы, просто копипастя код для них, но не подключая сами либы, просто потому, что не совсем понимают, что это и как
undefined выводится в модальном окне я не силен в js но могу сказать что библиотека подключенна. отрабатывало у меня по всей видимости потому что я не правильно пытаюсь обратится к элементу с id было Код (Text): $(document).ready(function(){ $('a #tt').bind('click',clickHandler); }); function clickHandler(eventObject) { eventObject.preventDefault(); alert($(eventObject.target).attr('href')); return false; } зделал Код (Text): $(document).ready(function(){ $('#tt').bind('click',clickHandler); }); function clickHandler(eventObject) { eventObject.preventDefault(); alert($(eventObject.target).attr('href')); return false; } алерт выводится , но вместо сылки выходит undefined код html Код (Text): <a href="http://test.loc/contr/fun/3" id="tt"> <button name='submit' class="btn btn-default btn-lg" > <span class="glyphicon glyphicon-thumbs-up"></span><em>Нравится</em></button> </a> убрал вложеность Код (Text): <a href="http://test.loc/contr/fun/3" id="tt"> Нравится </a> все отработало как нужно. проблема решена: Код (Text): <button name='submit' class="btn btn-default btn-lg" > <span class="glyphicon glyphicon-thumbs-up"> </span> <em> <a href="http://test.loc/contr/fun/3" id="tt">Нравится</a> </em> </button> всем благодарен
В таком случае нужно воспользоваться объектом this в теле callback функции. Код (PHP): $(document).ready(function() { $('a').click(click); //$('a').bind('click',click); // работает }); function click() { alert(this.href); //alert($(this).attr('href')); // работает return false; } https://jsfiddle.net/rw55xt1y/12/ Ну, а для от правки запросов использовать $.post, $.get. Якобы без js не будет работать? Не будет ну... Ну хотя думаю никто его не отключает просто так.
решил таким способом Код (Text): $(document).ready(function(){ $('.voite').bind('click',clickheandler); }); function clickheandler(eO) { eO.preventDefault(); alert($(eO.target).attr('value')); return false; } html Код (Text): <button name='submit' class="btn btn-default btn-lg" > <span class="glyphicon glyphicon-thumbs-up"></span><em value="<?=base_url();?>users/voice/<?=$data['id_site'];?>" class="voite">Нравится</a> </em> </button> теперь вместо вывода алерт нужно отправить ajax запрос получить оответ вывести в модальное окне
Код (PHP): function clickheandler() { alert(this.value); return false; } Работает! Но, аттрибута value у этого элемента быть не может, по этому советую воспользоваться аттрибутом " data, data-* " А у jqery есть специальный метод .data(). И у вас косяк </a> закрыта, а самой ссылки нет.
Ды при чем тут js-не-js? Кнопки это кнопки. А ссылки - это ссылки. Использование ссылок вместо кнопок - это моветон из 90х еще, наверное.