我正在从可观察的对象上单击onfrom,但是我想从给出事件的元素中获取data属性。我正在尝试从内部使用此方法,但没有成功。我怎样才能通过jQuery实现正常的“ this”

var elem = $(".someElementClass");
var source = Rx.Observable.fromEvent(elem, 'click');
var subscription = source.subscribe(function (e) {
var x = $(this).attr("data-toget");
alert(x);
});

最佳答案

回调内的this不引用jQuery对象,例如在$.each中。在这种情况下,可以使用$(e.currentTarget)代替$(this)



var elem = $(".someElementClass");
var source = Rx.Observable.fromEvent(elem, 'click');
var subscription = source.subscribe(function (e) {
  console.log($(e.currentTarget).attr("data-toget"));
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.7/dist/global/Rx.umd.js"></script>
<button class="someElementClass" data-toget="100">Button-1</button>
<button class="someElementClass" data-toget="200">Button-2</button>
<button class="someElementClass" data-toget="300">Button-3</button>

09-10 11:50
查看更多