Это может быть немного странный случай, когда никто никогда не испытывал этого раньше, но я отправляю это на случай, если кто-то знает что-то, чего я не знаю.
Я использую jQuery 2.0.3 и AngularJS.
Если у меня есть якорь в index.html
, например:
# index.html
<a href="#" class="clickme">Click Me</a>
<script type="text/javascript">
$(function() {
$('.clickme').click(function() { console.log("click"); });
});
</script>
Затем он работает, и когда я нажимаю на него, он выводит 'click'. Но когда я помещаю это внутри шаблона, который я включаю с атрибутом ng-include
, jQuery внезапно не срабатывает. Если я размещаю script внутри шаблона с привязкой, но он имеет огонь.
# index.html
<div ng-include="'path/to/template.html'"></div>
# template.html
<a href="#" class="clickme">Click Me</a>
<script type="text/javascript">
$(function() {
$('.clickme').click(function() { console.log("click"); });
});
</script>
Это также относится к использованию директив, которые используют шаблоны. Это странно и вызывает у меня много хлопот с некоторыми выпадающими меню.
Кто-нибудь знает, почему это происходит?
Поскольку ваш clickme
, вероятно, недоступен в DOM ready, скорее, он помещается в DOM на Angular при загрузке template.html
- вам нужно использовать делегирование событий jQuery вместо использования .click
:
$(document).on("click", ".clickme", function() {
console.log("click");
});
Это обеспечит привязку jQuery к документу, а затем отслеживает любые события кликов на элементах с классом clickme
.
$(document)
- это просто пример, лучше связать его с родительским элементом .clickme
- очевидно, с тем, который не генерируется Angular :)