2015-09-09 4 views
0

Когда я нажимаю на любую кнопку, событие click не запускается. Жесткий я заставил его работать, используя $("div").on("click", "button", function() {, но я хочу, чтобы он работал, используя .class селектор.Нажмите событие, не запускающее с помощью ON?

Синтаксис ON:

.На (события [селектор] [данные], обработчик)

HTML:

<div> 
    <button class='alert'>Alert!</button> 
</div> 

код :

$(document).ready(function() { 
    $("div button").on("click", ".alert", function() { 
     console.log("A button with the alert class was clicked!"); 
    }); 
    $("<button class='alert'>Alert!</button>").appendTo("div"); 
}); 

образец для работы here

Это может быть основным, но я серьезно начинаю пробовать & понимать несколько концепций. Помогите мне понять.

+1

Неверный выбранный вами селектор. Используйте '$ ('div'). On ('click', '.alert', function ...'. Check [Demo] (http://jsfiddle.net/LkqTU/26606/) – Tushar

+0

@Tushar приятно один жесткий нажмите на огонь для всех элементов, имеющих ассоциированный класс. –

+0

Вниз избиратель осмеливается комментировать –

ответ

4

Ваш текущий код пытается делегировать событие для элемента с предупреждением класса в кнопке. которые не существуют.

Если вы пытаетесь передать событие для кнопки с классом предупреждения, Вы должны использовать:

$("div").on("click", "button.alert", function() { 
    console.log("A button with the alert class was clicked!"); 
}); 

Working Demo

+0

Ваша демонстрация немного ошибочна: бит appendTo должен быть непосредственно после console.log , чтобы добавить только вторую кнопку после первого щелчка. См. ответ @Rejith R Krishnan. –

+1

@PhillHealey: LOL .... вот как это делается. Средняя часть - это просто комментарии, добавленные OP. –

+0

оцените это.! Теперь я вижу, как все может работать –

1
$(document).ready(function() { 
    $("div").on("click", "button.alert", function() { 
     console.log("A button with the alert class was clicked!"); 
    }); 
    $("<button class='alert'>Alert!</button>").appendTo("div"); 
}); 
+0

Цените это! –

1

Вы также можете попробовать это ...

$(document).ready(function() { 
    $("div button.alert").on("click", function() { 
     console.log("A button with the alert class was clicked!"); 
    }); 

    $("<button class='alert'>Alert!</button>").appendTo("div"); 
}); 

FIDDLE для справки