47

要素の属性値を取得するにはどうすればよいですか?

例: 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/

4

8 に答える 8

18

マークアップで doStuff($event) を使用し、角度で currentTarget.getAttribute("data-id")) を介してデータ属性値を取得できます。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/

于 2016-01-18T09:38:09.587 に答える
0

これは、要素のデータセット プロパティを使用して行うことができます。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>

于 2015-10-28T13:32:12.240 に答える