我有以下代码:
var resultList = resultWidget.getResultObjectList();
for(var i = 0; i < resultList.length; i++){
var object = resultList[i];
$(object.getWidget()).unbind("click", object, callDataServlet);
$(object.getWidget()).click(object, callDataServlet);
}
function callDataServlet(event) {
event.preventDefault();
var data = event.data;
console.log(data.getData());
}
但是我的控制台总是显示三(3)行数据:
["Washington", "Mary", "Jane", "USA", "09/02/1978"]
["Washington", "Mary", "Jane", "USA", "09/02/1978"]
["Washington", "Mary", "Jane", "USA", "09/02/1978"]
我该如何解决这个问题?我已经尝试过unbind但似乎没什么用。
答案 0 :(得分:0)
你的对象是否嵌套在另一个中?如果是这样 - 试试这个:
function callDataServlet(event) {
event.stopPropagation();
event.preventDefault();
var data = event.data;
console.log(data.getData());
}
答案 1 :(得分:0)
您正在取消绑定尚未附加任何点击事件的元素object
上的点击事件,因此$(object.getWidget()).unbind("click", object, callDataServlet);
不执行任何操作,并且在每次迭代中都附加了点击事件,因此您将拥有{ {1}}事件已附加。
答案 2 :(得分:0)
感谢帮帮!我设法追查问题。问题不在于我如何添加处理程序。我在我的小部件容器上使用iScoll.js,设置为:
var _iscroll = setting.iscroll = new IScroll(setting.body, {
click: true,
scrollbars: true,
mouseWheel: true,
startX: 0,
}
);
我将点击设置更改为false即可正常工作。