尝试将事件数据传递给函数

时间:2015-11-20 14:10:10

标签: javascript jquery

我正在尝试将一些数据传递给函数,但我遇到了下面代码的问题。如果我只使用$(this).data("id")作为其有用的值,我尝试使用ABC时,似乎无法使其正常工作。

$(".printLabel").click({
    recordId: $(this).data("id")
},  printLabel);

function printLabel(event){
    var data = event.data;
    console.log(data.recordId);
}

2 个答案:

答案 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;
&#13;
&#13;