gpt4 book ai didi

jquery - 更改 AngularJS 中多个元素的类

转载 作者:行者123 更新时间:2023-12-01 07:46:35 25 4
gpt4 key购买 nike

我有一个用 Apache Cordova 和 AngularJS 编写的拼图应用程序。该拼图由一个网格组成,每个网格方 block 中有多个“灯”。

enter image description here

当您将鼠标悬停在其中一盏灯上时,某些区域会亮起。我在标准 jQuery 中工作得很好,鼠标悬停事件绑定(bind)到类,但我很难让它在 AngularJS 中工作。我可以在项目中包含完整的 jQuery - 但这感觉就像作弊。

到目前为止,我有以下指令:-

app.directive('etkHighlight', function () {
return {
link: function (scope, element, attr) {
element.on("mouseenter", function () {
var id = attr.cage;
var el = angular.element(document).find(id);
el.addClass("etk-light-on");
console.log("enter")
})
element.on("mouseleave", function () {
var id = attr.cage;
console.log("enter")
})
}
}
});

HTML 如下所示:-

<div class="box">
<div class="etk-key" id="cage-t">T</div>
<div class="etk-light etk-base-left etk-light-off" data-cage="cage-k" etk-Highlight>k</div>
<div class="etk-light etk-base-right etk-light-off" data-cage="cage-m" etk-Highlight>m</div>
</div>

我正在获取需要更改类的对象的 id,并且 el 填充了一些东西,但 addClass 无法实际添加该类。

我做错了什么?这是否是解决这个问题的正确方法?理想情况下,我想要一些可以用来管理所有灯光的鼠标悬停的类更改的东西。

Plnkr:- http://plnkr.co/edit/JjwucC3HECN9Mmm4S3Ib注意,只有顶行标记为 l、k 和 m 的灯才设置为使用该指令

更新我意识到我没有很好地定义这个问题。例如,当我将鼠标悬停在标有“l”的灯光上时,我想更改该灯光的类别以及右侧和下方的“L”方 block ......

最佳答案

这会起作用,我在 html 中使用 enterleave 来传递 class 名称附加到directivelink函数中,将它们检索为attrs.enterattrs.leave

*.html 文件:-

<body ng-app='app'>
<div etk-highlight enter='red' leave='black'>test</div>
</body>

*.js 文件:-

var app = angular.module('app', [])
.directive('etkHighlight', function () {

return {
restrict: 'A',
link: function (scope, element, attrs) {
element.on("mouseenter", function () {
element.removeClass(attrs.leave);
element.addClass(attrs.enter);
});
element.on("mouseleave", function () {
element.removeClass(attrs.enter);
element.addClass(attrs.leave);
});
}
}
});

*.css 文件:-

.red {
color:red;
}

.black {
color:black;
}

关于jquery - 更改 AngularJS 中多个元素的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36566220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com