jQuery悬停函数没有'不要处理ng个重复的有角度的物体
jQuery hover function doesn't work on ng-repeat angular objects
我创建了一个jQuery悬停函数:
$('.deleteButton').hover(function(){
$(this).css('opacity', '1');
},
function(){
$(this).css('opacity', '.5');
});
当我把HTML元素硬编码到index.HTML文档中时,它就起作用了,但当我从模板中导入元素时就不起作用了。
以下模板:
<div class="logBox">
<div class="dateAndLocation">
<p>{{ info.date | date }}</p>
<p style="margin-top:-.7em">{{ info.location }}</p>
</div>
<div class="routeNameBox">
<p class="routeName">{{ info.routeName }}</p>
<p class="gradeAndType">{{ info.grade }} | {{ info.type }}</p>
</div>
<div class="timeAndLevelBox">
<div class="timeBox pull-left">
<p class="timeText">{{ info.time }}</p>
</div>
<div class="pclBox pull-right">
<p class="pclText">{{ info.challengeLevel }}</p>
</div>
</div>
<div class="notesBox">
<p class="notesText">{{ info.notes }}</p>
</div>
<div class="photoCircle" style="background-image:url({{ info.photo }})"></div>
</div>
<div class="deleteButton"><p>—</p></div>
index.html代码:
<div class="container" style="min-width:1200px; margin:auto;" ng-repeat="climbLog in climbLogs">
<climb-log info="climbLog"></climb-log>
<div>
它运行良好,并按预期重复。。但是当我把鼠标悬停在删除按钮上时,它并没有改变它的不透明度,正如jQuery函数中所指定的那样(在我开始使用模板之前它已经工作了(
直接的问题是$(...).hover(...)
将只收集当前存在的节点,并在这些节点上附加一个hover
处理程序。因此,任何可能最终与选择器匹配的未来节点上都不会有处理程序。
使用jQuery的on
(具有实时选择器功能(解决了这个问题:$('#placeWithDeleteButtons').on('hover', '.deleteButton', ...)
。这将处理程序附加到捕获冒泡事件的祖先上,并检查触发的后代是否与选择器匹配。因此,由于处理程序不在触发器上,因此只需要一个处理程序就可以在任何当前或未来的匹配节点上捕获事件。
然而,正如注释所示,如果您正在处理Angular项目,则最好使用Angular的等效工具。
编辑:实际上,hover
必须分解为mouseenter
和mouseleave
:
$('.logBox').on("mouseenter mouseleave", ".deleteButton", function(evt) {
$(this).css('opacity', evt.type === 'mouseenter' ? 1 : 0.5);
});
.deleteButton {
opacity: 0.5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="logBox">
<button class="deleteButton">Foo</button>
</div>
然而,如果你只想在悬停时改变不透明度,有一种更简单的方法:
.deleteButton {
opacity: 0.5;
}
.deleteButton:hover {
opacity: 1;
}
<div class="logBox">
<button class="deleteButton">Foo</button>
</div>
相关文章:
- ng更改函数未被调用,并且没有错误
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- 使用jqGrid列格式化程序函数使ng-click工作
- 想要将ng个repeat对象传递给自定义筛选函数
- ng用异步函数模拟怪异行为
- ng-click指令没有调用整个函数
- AngularJS ng repeat显示原型函数未定义
- ng中继器打印结果0;当我运行函数时
- 调用时未输入角度 ng 单击函数
- 在 Angular 指令中定义一个用于 ng-click 的函数
- ng单击触发函数,但无法更改$scope.var
- 在指令之后加载的角度ng-init函数
- 是否可以在 ng-click 中调用函数字符串
- 如何在 ng-click 函数中更改$rootScope值
- 在引导模式中使用“ng click”触发函数
- 如何解析每个ng重复项的函数
- 为什么更改范围获胜'不能在ng if内部工作,而是通过函数调用AngularJS
- Angularjs指令链接调用ng-click中的函数
- 使用ng函数的麻烦