2013-05-12 3 views
0

Что я ожидаю здесь, это функция, которая срабатывает при щелчке по классу, но этого не происходит! A.button динамически создается, но IS на странице, когда он полностью загружен!Не срабатывает при использовании .on?

Любые идеи, почему?

HTML:

<a class="btn btn-success useImg"> 
      <i class="fa-icon-plus"></i> 
      <span>Use</span> 
    </a> 

Jquery:

$(".useImg").on("click", function(){ 
    alert("test"); 
    }); 
+2

Попробуйте, если делегация помогает в любом случае. '$ (document) .on (" click "," .useImg ", ...)' –

+0

Вы забыли обернуть в '$ (document) .ready (...)', возможно? –

+0

А какая версия jQuery вы используете? 'on()' был добавлен в 1.7 (до этого рекомендуется 'delegate()'). –

ответ

1

Вам нужно добавить событие щелчка к другому элементу дальше вверх по дереву DOM, а затем процеживают работать на вашем якорного элемента. Это будет срабатывать для любых элементов с классом .useImg, включая динамически добавленные.

$('body').on("click", ".useImg", function(){ 
    alert("test"); 
}); 

См http://api.jquery.com/on/

Убедитесь, что вы обернуть код в случае JQuery DOM Ready для обеспечения полной загрузки страницы. например

$(document).ready(function() { 
    $('body').on("click", ".useImg", function(){ 
     alert("test"); 
    }); 
}); 
+3

Учитывая, что элемент (предположительно) присутствует на загрузке страницы, как это может помочь? –

+0

Спасибо за быстрый ответ! Пробовал. Живет, как это сделал, но ваши идеи были лучше. Еще раз спасибо! – Kim

+4

@Kim не использует 'live'. Это долгое время устарело и удалено из 1.9 –

0

Try, когда документ будет готов

$(function() { 
$(".useImg").on("click", function(){ 
    alert("test"); 
    }); 
} 
0
$(document).ready(
    $('.useImg').click(function(){ alert(test); }) 
) 
+4

Как он может работать, когда оригинал не работает? –

+0

Ahh .. Я забыл написать $ (document) .ready() .. редактируя ответ – draxxxeus

+1

, тогда даже нет смысла переписывать 'on' to' click' –

4

Ваш код отлично работает в автономном jsFiddle, который вы можете увидеть here.

Таким образом, вы должны иметь один из этих вопросов:

  1. Вы пытаетесь установить обработчик события до того, как DOM готов или до того, как объект существует.
  2. В вашем javascript есть ошибка, которая предотвращает установку обработчика события.
  3. Фактический код на вашей странице или HTML не совпадает с тем, что вы задали в вопросе, так что есть другая проблема, которая не раскрывается.

Вы можете защитить от первого элемента, поставив свой код в обработчике $(document).ready() или с помощью делегированной обработки событий.

Для второго элемента вам необходимо проверить консоль ошибок браузера на наличие ошибок скрипта.

Смежные вопросы