列表:
<ul class="div_chart1" data-quickcode="mac" data-questionid="1" >
<li>
<img src="inmark/pie_icon.jpg" class="pie_icon" onclick="ok()"/>
</li>
</ul>
功能:
function ok(){
console.log($(this).parent().parent().data('quickcode'));
console.log($(this).parent().parent().data('questionid'));
}
function ok()返回undefined。这有什么问题?
答案 0 :(得分:6)
尝试将this
引用作为参数传递给内联处理程序
HTML:
<img src="inmark/pie_icon.jpg" class="pie_icon" onclick="ok(this)"/>
JS:
function ok(elem){
console.log($(elem).closest('ul').data('quickcode'));
console.log($(elem).closest('ul').data('questionid'));
}
最好的方法是,
$('.pie_icon').click(function(e){
e.stopPropagation();
var parent = $(this).closest('ul');
console.log(parent.data('quickcode'));
console.log(parent.data('questionid'));
});
答案 1 :(得分:1)
this
指的是全局窗口对象。
console.log(this); // Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
因此传递元素对象,
<img src="inmark/pie_icon.jpg" class="pie_icon" onclick="ok(this)"/>
function ok(element) {
console.log($(element).parent().parent().data('quickcode'));
console.log($(element).parent().parent().data('questionid'));
} // here is element is HTML element object. Just wrap it with jQuery to use jQuery function.