2015-07-02 51 views
0

jQuery是示出了關於訪問自定義數據屬性

這裏是一些很奇怪的行爲是HTML

<div id="foo2" data-bar="bar" class="baz">some text</div> 

JQuery的

$(document).ready(function() { 

    $("#mainPage").on("click", "[id^='foo']", doSomething); 

}); 


function doSomething(e) { 
    var bar = $(e.target).attr("data-bar"); 
} 

這給出巴=未定義

然而

function doSomething(e) { 
     e.target 
     var bar = $(e.target).attr("data-bar"); 
    } 

給巴= 「酒吧」

我發現它完全離奇。在Chrome調試控制檯上,它清楚地顯示了數據集或目標持有bar: "bar",但沒有e.target它返回undefined。這是一種錯誤嗎?

+0

使用$(本),而不是$(e.target) –

+1

試試這個http://jsfiddle.net/suLufgyt/和檢查控制檯 – Sushil

+0

我沒有輸出到控制檯。 – AlyoshaKaramazov

回答

1

使用$(this)$(e.target)工作。你的foo div是否在ID爲mainPage的元素中?

$(document).ready(function() { 
 

 
    $("#mainPage").on("click", "[id^='foo']", doSomething); 
 

 
}); 
 

 

 
function doSomething(e) { 
 
    console.log($(e.target).attr("data-bar")); 
 
    console.log($(this).attr('data-bar')); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<body id='mainPage'> 
 
<div id="foo2" data-bar="bar" class="baz">some text</div> 
 
    </body>

+0

不,$(e.target)不起作用。正如我所說的,控制檯清楚地顯示e有foo2的目標,foo2有一個帶有「bar」的數據集,但它會返回undefined,除非我神祕地將e.target放在它上面。是的,它是在ID爲#mainPage的div中。 – AlyoshaKaramazov

+1

運行上面的代碼片段,點擊一些文本並查看控制檯,兩個選項都可以工作 – depperm