angular 获取 ng-click 所在元素对象的问题

页面结构是这样的<divng-click="fun($event.target)"data-str="abc"><span>...</span><span>...</sp... 页面结构是这样的
<div ng-click="fun($event.target)" data-str="abc">
<span>...</span><span>...</span><span>...</span>
</div>
ng-click写在外面的父元素上,我想拿到"data-str"这个属性值,但点击只能点到子元素上,我用$event.target只能拿到子元素span对象,有什么方法解决吗?谢谢了。
展开
 我来答
owen27
2016-07-21 · TA获得超过901个赞
知道小有建树答主
回答量:980
采纳率:100%
帮助的人:663万
展开全部

首先,确实是可以通过$event.target参数来拿对象的,拿到的对象可像操作jquery元素一样操作,所以子集、父级、同级都可以随意转换。


但是,并不推荐这种做法,angular存在的目的就是避免对dom元素的直接操作,你的这个需求,推荐考虑一下办法实现:


  1. data-str里面的东西写到ngClick参数中,如<div ng-click="fun('abc')">,这样fun()直接获取到abc参数,简单明了,可读性和可维护性也更强;

  2. 封装一个directive,通过link(scope, element, attrs)获取data-str参数,同时亦可以对dom直接进行操作,可定制性更强,适合高级需求,但至少我从题主的例子里面看不出。

Benbengbet
2018-04-11 · TA获得超过1.2万个赞
知道小有建树答主
回答量:120
采纳率:100%
帮助的人:6.4万
展开全部

只需要在函数参数中传入$event参数,在函数中使用$event.target就可以获取到了。

具体方法:

[javascript] view plain copy

<input class="unchecked" type="checkbox" ng-model="item.isCustOmized" ng-click="switchCheckBox($event, item.isCustOmized)" />  

[javascript] view plain copy

$scope.switchCheckBox = function($event, value) {  

// console.log(value)  

if (value) {  

$($event.target).addClass("checked");  

} else {  

$($event.target).removeClass("checked");  

}  

}  

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2c22312
2016-07-18 · TA获得超过398个赞
知道答主
回答量:110
采纳率:0%
帮助的人:85.6万
展开全部
$event.target.parent
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巨蟹豆腐机
2018-01-10
知道答主
回答量:20
采纳率:0%
帮助的人:6.1万
展开全部
$event.currentTarget能解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式