Jquery.click() event.preventDefault() не работает

Я создаю веб-приложение, которое можно расширять, отбрасывая скрипты в предварительно заданный каталог. script должен прочитать заголовки файлов перед тем, как перейти на страницу, поэтому мне нужно использовать .preventDefault(), когда ссылки будут нажаты, и сначала запустите некоторый JScript. К сожалению, я не могу пройти через .preventDefault()

Вот мой формат ссылки:

<a href="path/to/file.php" class="filelink">Some Text</a>

здесь jquery, который я пытаюсь использовать, чтобы остановить действие по умолчанию:

    $( '.filelink' ).click( function( e ) {
        e.preventDefault();
        //do some other stuff here
    });

EDIT:

Дополнительная информация:

<script>...</script> находится в нижнем колонтитуле. Эта функция INSIDE $(document).ready ПОСЛЕ вызова $.ajax, который строит список ссылок, которые эта функция пытается прослушать клики.

Ответы

Ответ 1

Поскольку ваши ссылки добавляются динамически на страницу, вам нужно использовать document.on() для захвата событий щелчка.

синтаксис добавления слушателей событий в динамический контент выглядит следующим образом

$(document).on( event, selector, callback );

чтобы ваш обработчик кликов стал:

$(document).on('click','.filelink',function(e){

 e.preventDefault();

 //code here

 return false;

});

Ответ 2

Я думаю, вы пропустили $ (Документ).ready()

Обновите свой код следующим образом:

$(document).ready(function(){
     $( '.filelink' ).click( function( e ) {
        e.preventDefault();
        //do some other stuff here
    });

})

Ответ 3

- ваш код, окруженный:

$(function(){

//your code here

});

? или

$(document).ready(function(){

//your code here

});

?, потому что вы должны подождать, пока элемент <a></a> не будет готов, прежде чем добавлять к нему своего слушателя. попробуйте код выше или поместите свой код в нижней части html прямо перед тегом </body> или сразу после элемента <a></a>. которые должны работать

РЕДАКТИРОВАТЬ:, так как ваши ссылки добавляются, динамически вызывают функцию $( '.filelink' ).click() сразу после добавления

Ответ 4

У меня была та же проблема, потому что я изменил window.location.search в обработчике событий:

 $( '.filelink' ).click( function( e ) {
        e.preventDefault();
       window.location.search = "something";
 });

Чтобы исправить мою проблему, я использовал window.location.hash (что больше того, чего я хотел).

Ответ 5

Для меня проблема заключалась в синтаксической ошибке в коде Javascript.

Я заменил переменную php на одну из переменных JS, как показано ниже,

var myvar = "<?php echo $myvar; ?>";

который дал следующий результат,

var myvar = "value in "myvar" which is not escaped";

Это сработало, когда я экранировал переменную.

Пожалуйста, проверьте, есть ли какая-либо синтаксическая ошибка в вашем коде.