Javascript + jQuery, нажмите обработчик, возвращающий false, чтобы остановить браузер от следующей ссылки - PullRequest
1 голос
/ 26 октября 2009

Я пытаюсь запретить браузеру переходить по определенным ссылкам, но я хочу, чтобы при нажатии на них отображались некоторые элементы Div.

У меня проблемы с получением ссылок, за которыми не следят.

Вот что у меня есть:

var titles = $('a.highlight');
jquery.each(titles, function(){
    this.click(function(){
        return false;
    });
});

Похоже, что обработчик кликов не назначен. Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 26 октября 2009

Попробуйте

this.click(function(e){ e.preventDefault(); }

На самом деле, похоже, вам может понадобиться использовать конструктор jQuery на this:

$(this).click(function(){ return false; }

Вы также можете попробовать использовать параметры функции each вместо использования this:

jQuery.each( titles, function(index, elem) { $(elem).click( function() { return false; } ) } );

Лично я бы просто сделал titles.each( .... В этом случае вы можете использовать this для привязки обработчика кликов. Я не совсем уверен, с чем связывается this с jQuery.each

Или просто позвоните click на titles:

titles.click( function() { return false; } )

Это свяжет щелчок с каждым элементом в titles. Вам не нужно перебирать их.

0 голосов
/ 26 октября 2009

Вы можете немного сжать этот jquery:

$('a.highlight').click(function() { return false; });

Вы также должны убедиться, что:

  • Нет других обработчиков кликов, зарегистрированных для этих элементов позже.
  • Код, который вы прикрепляете после загрузки элементов. Если они загружены не полностью, они не будут найдены в селекторе $ ('a.highlight'). Самый простой способ сделать это - поместить ваш код в блок $(document).ready(function() { *** code here *** });.

Редактировать: Как и в других ответах, проблема заключалась в том, что this представляет объект DOM, а $(this) - объект jquery. Чтобы использовать функцию .click для присоединения обработчика, вам нужен объект jquery.

Короче говоря, использование this внутри каждого цикла не будет работать с тем, что вы пытаетесь сделать. Вам нужно получить представление jquery, используя вместо этого $(this).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...