AngularJS - 获取元素属性值

时间:2014-07-10 09:51:08

标签: javascript angularjs angularjs-scope jqlite

如何获得元素属性值?

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/

8 个答案:

答案 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'));