如何获得元素属性值?
e.g。 HTML元素:
<button data-id="345" ng-click="doStuff($element.target)">Button</button>
JS:
function doStuff(item){
angular.element(item)[0].data('id'); // undefined is not a function
}
任何建议都非常感谢, 这里的JSFIDDLE演示:http://jsfiddle.net/h3TFy/
答案 0 :(得分:55)
由于您要将目标元素发送到您的函数,您可以这样做以获取id:
function doStuff(item){
var id = item.attributes['data-id'].value; // 345
}
答案 1 :(得分:16)
.data()
方法来自jQuery。如果要使用此方法,则需要包含jQuery库并访问如下方法:
function doStuff(item) {
var id = $(item).data('id');
}
我还更新了您的jsFiffle
<强>更新强>
使用纯angularjs和jqlite,你可以实现像this这样的目标:
function doStuff(item) {
var id = angular.element(item).data('id');
}
您不能使用[]
访问该元素,因为您将获得纯DOM元素而不使用所有jQuery或jqlite额外方法。
答案 2 :(得分:15)
您可以在标记中使用doStuff($ event)并获取数据属性值 通过currentTarget.getAttribute(&#34; data-id&#34;))的角度。 HTML:
<div ng-controller="TestCtrl">
<button data-id="345" ng-click="doStuff($event)">Button</button>
</div>
JS:
var app = angular.module("app", []);
app.controller("TestCtrl", function ($scope) {
$scope.doStuff = function (item) {
console.log(item.currentTarget);
console.log(item.currentTarget.getAttribute("data-id"));
};
});
分叉你的初始jsfiddle:http://jsfiddle.net/9mmd1zht/116/
答案 3 :(得分:0)
您可以使用元素的dataset属性执行此操作,使用有或没有jquery它工作...我不知道旧的浏览器
注意:当您使用破折号(' - ')时,您需要使用大写字母。例如。 a-b => aB
function onContentLoad() {
var item = document.getElementById("id1");
var x = item.dataset.x;
var data = item.dataset.myData;
var resX = document.getElementById("resX");
var resData = document.getElementById("resData");
resX.innerText = x;
resData.innerText = data;
console.log(x);
console.log(data);
}
<body onload="onContentLoad()">
<div id="id1" data-x="a" data-my-data="b"></div>
Read 'x':
<label id="resX"></label>
<br/>Read 'my-data':
<label id="resData"></label>
</body>
答案 4 :(得分:0)
function onContentLoad() {
var item = document.getElementById("id1");
var x = item.dataset.x;
var data = item.dataset.myData;
var resX = document.getElementById("resX");
var resData = document.getElementById("resData");
resX.innerText = x;
resData.innerText = data;
console.log(x);
console.log(data);
}
<body onload="onContentLoad()">
<div id="id1" data-x="a" data-my-data="b"></div>
Read 'x':
<label id="resX"></label>
<br/>Read 'my-data':
<label id="resData"></label>
</body>
答案 5 :(得分:0)
<button class="myButton" data-id="345" ng-click="doStuff($element.target)">Button</button>
我通过querySelector将按钮添加到按钮,然后获取数据属性
var myButton = angular.element( document.querySelector( '.myButton' ) );
console.log( myButton.data( 'id' ) );
答案 6 :(得分:0)
如果您使用的是Angular2 +,以下代码将有所帮助
您可以使用以下语法从html元素获取属性值
//检索html元素
const element = fixture.debugElement.nativeElement.querySelector('name of element'); // example a, h1, p
//从该元素获取属性值
const attributeValue = element.attributeName // like textContent/href
答案 7 :(得分:-3)
使用Jquery函数
<Button id="myPselector" data-id="1234">HI</Button>
console.log($("#myPselector").attr('data-id'));