Селектор класса jQuery не работает - PullRequest
14 голосов
/ 06 июля 2011

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

Мой HTML-раздел, о котором идет речь, выглядит следующим образом ...

<div id="foo">
  <a class='bar' href='#'>Next</a>
</div>

Раздел jQuery выглядит следующим образом ..

$('.bar').click(function()
{
  alert("CLICKED");
});

Моя проблема в том, что я не могу получить это предупреждение, я думаю, что я правильно выбираю класс «следующий», но этоне подниму его по какой-то причине.Я также попробовал почти все на этой странице , но ничего не работает.Если я не попытаюсь указать тег привязки, т. Е. $ ('# Foo'). Click (function () ..., то это сработает, но в этом элементе div будет несколько тегов привязки, поэтому простое оповещение будет выполнено, когданажатие на div не сработает для того, что мне нужно. Веб-сайт, на котором он находится, представляет собой поисковую систему, использующую ajax для отправки информации в do_search.php. Внутри do_search.php я принимаю решения о разбиении на страницы на основе количества найденных результатов, иесли применимо, можно создать и повторить следующую, предыдущую, последнюю и первую ссылку.

РЕДАКТИРОВАТЬ: я только что понял, это было мое размещение функции .next, так как она не была создана напервоначальная загрузка документа, но вместо того, чтобы после того, как результат был возвращен, я переместил функцию .next в успешную часть функции ajax, поскольку именно там будут создаваться кнопки, если они должны быть, теперь это работает.

Ответы [ 4 ]

32 голосов
/ 06 июля 2011

Попробуйте использовать команду live():

$(".bar").live("click", function(){ alert(); });

Поскольку вы загружаете свою кнопку через AJAX, событие щелчка не привязано к ней.Если вы используете команду live (), она автоматически привязывает события ко всем элементам, созданным после загрузки страницы.

Подробнее, здесь

7 голосов
/ 06 июля 2011

Вы наверняка пропустили $(document).ready().Ваш код должен быть:

  $(document).ready(function(){
      $('.bar').click(function()
      {
        alert("CLICKED");
      });
    });

Надеюсь, это поможет.Приветствия

6 голосов
/ 26 августа 2014

.live теперь устарела и является выбранным ответом для этого. Ответ в комментариях к выбранному ответу выше. Вот решение, которое решило это для меня:

$(document).on('click','.bar', function() { alert(); });

Спасибо @Blazemonger за исправление.

1 голос
/ 06 июля 2011
  1. Убедитесь, что вы правильно включили JQuery Library.
  2. Убедитесь, что ваш скрипт написан между $(document).ready() in short $(function(){ });

Демо: http://jsfiddle.net/W9PXG/1/

<div id="foo">
  <a class='bar' href='#'>Next</a>
</div>

$(function(){
$('a.bar').click(function()
  {
    alert("CLICKED");
});
});
...