我正在尝试将一些数据传递给函数,但我遇到了下面代码的问题。如果我只使用$(this).data("id")
作为其有用的值,我尝试使用ABC
时,似乎无法使其正常工作。
$(".printLabel").click({
recordId: $(this).data("id")
}, printLabel);
function printLabel(event){
var data = event.data;
console.log(data.recordId);
}
答案 0 :(得分:2)
在您提供的对象中this
是对window
的引用,而不是对被点击的元素的引用,因此您正在寻找的数据属性未定义。
假设data
元素本身位于.printLabel
元素上,您可以直接在事件处理程序中检索它而不发送任何事件参数。试试这个:
$(".printLabel").click(function() {
var recordId = $(this).data("id")
console.log(recordId);
});
答案 1 :(得分:0)
为什么以更容易理解的方式调用函数会出现问题?此外,如果你坚持传递一个对象,你需要使用传递的对象 - var data = event.data;
也不会。以下是我使用对象的建议:
$(".printLabel").on("click",function() {
printLabel( {recordId: $(this).data("id")});
});
function printLabel(passedObject){
console.log(passedObject.recordId);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="printLabel" data-id="ID1">This is id1</div>
&#13;