[英]JQuery Retrive data-attribute from on click function
我有這樣的div結構:
<div class='bar'>
<div class='contents'>
<div class='element' data-big='join'>JOIN ME</div>
<div class='element' data-big='play'>PLAY ME</div>
<div class='element' data-big='list'>GO TO LIST</div>
<div class='element' data-big='chart'>GO TO TOP 10</div>
</div>
</div>
如何通過onClick函數引用其數據屬性?
我試過了
$(".bar .element").on('click', ()=> {
alert($(this).data('big'));
});
但它始終警告“未定義”。
編輯:
我的斷言從一開始就很糟糕,我使用了Typescript語言中的lambda(或箭頭)表達式。 這使得關鍵字“this”的含義不同。
片段:
$(".bar .element").on('click', function(){
alert($(this).data('big'));
});
工作得到尊重。
你的.barra
沒有.barra
( 就像你原來的JS
- $(".barra .element")
)元素一樣,你沒有正確編寫回調函數:
$(".bar .element").on('click', function() {
alert($(this).data('big'));
});
$(".bar .element").on('click', function() { alert($(this).data('big')); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class='bar'> <div class='contents'> <div class='element' data-big='join'>JOIN ME</div> <div class='element' data-big='play'>PLAY ME</div> <div class='element' data-big='list'>GO TO LIST</div> <div class='element' data-big='chart'>GO TO TOP 10</div> </div> </div>
你應該改變你的功能,如下所示
$(".bar .element").on('click', function() {
alert($(this).attr('data-big'));
});
在TypeScript中,箭頭函數表達式( () =>
)用於保留詞法范圍。 這意味着,當你使用this
箭頭的功能里面,它會指向同一個范圍,因為使用this
功能之外。
在您的情況下,您希望函數使用onclick
事件的范圍而不是詞法范圍運行,因此您應該避免使用箭頭函數而是使用function ()
。
這是工作解決方案:
jQuery的:
$(".bar .element").on('click', function() {
alert($(this).attr('data-big'));
});
你可以使用“id”來做到這一點:
<div id='div1' class='element' data-big='join'>JOIN ME</div>
$("#div1").on('click', ()=> { alert($(this).data('big')); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.