我正在从可观察的对象上单击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>