【发布时间】:2014-07-31 04:07:52
【问题描述】:
我有一个显示三个图像的简单指令。在鼠标悬停时,它应该从黑白切换到正常图像。 下面给出的是指令内的代码。
<div class="container">
<div class="row">
<div class="col-md-4">
<h3>
Example 1</h3>
<div class="fd-fade1 fd-effect">
<img src="http://i.imgur.com/yxAxCaK.jpg" class="fd-img1" alt="">
</div>
<!-- /.fd-fade -->
</div>
<!-- /.col-md-4 -->
<div class="col-md-4">
<h3>
Example 2</h3>
<div class="fd-fade2 fd-effect">
<img src="http://i.imgur.com/jlattvQ.jpg" class="fd-img2" alt="">
</div>
<!-- /. fd-fade -->
</div>
<!-- /.col-md-4 -->
<div class="col-md-4">
<h3>
Example 3</h3>
<div class="fd-fade3 fd-effect">
<img src="http://i.imgur.com/XqtS5WA.jpg" class="fd-img3" alt="">
</div>
<!-- /. fd-fade -->
</div>
<!-- /.col-md-4 -->
</div>
<script type="text/javascript">
$(document).ready(function () {
debugger;
$('.fd-effect').hover(function () {
$(this).children("img").stop().fadeIn('slow');
// add .stop() to prevent event chaining
}, function () {
$(this).children("img").stop().fadeOut("slow");
}); // end .fd-effect
}); // end document.ready function
</script>
</div>
悬停的 jQuery 脚本如上所示(嵌入在模板中)。
我的问题!!!
此代码不在 angularjs 指令中运行。调试器未命中事件。 有人可以帮我理解为什么它不运行吗?
P.S 如果不在指令中,代码确实会运行。
--编辑..
因为这个问题对很多人来说太模糊了,让我澄清一下。
我有一个简单的角度指令,它使用模板。此模板包含 html 和内联 javascript 以呈现 3 张图像。
指令:
var app = angular.module('albumApp', []);
app.directive('album', function ($log) {
return {
restrict: 'E',
templateUrl: 'templates/default.htm',
replace: true
};
}
这就是我所拥有的。html 是 default.htm 中存在的那个
在主html页面中,
我只是写,我希望 html 能够被渲染并且 jQuery 能够像平常一样执行。
<html ng-app="albumApp">
<head>
<title>Test</title>
<head>
<body>
<album />
</body>
</html>
请注意:指令有效并且模板被渲染。但是模板内的脚本不起作用。我怀疑是为什么!
【问题讨论】:
-
你已经绑定了鼠标悬停事件,即使你不需要jQuery。这里是链接docs.angularjs.org/api/ng/directive/ngMouseover
-
在我目前的情况下,您的解决方案运行良好。但我很想知道为什么内联 jQuery inside 指令都不起作用。为什么调试器没有命中?
-
@vighnu 显示你的指令代码不起作用。向我们展示您如何在指令中添加 jquery 代码。
-
@bhantol 更新了问题。
标签: jquery angularjs angularjs-directive