我有一个 jquery 函数,它调用下面定义的 java 方法。
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("clickController", new RecordProcessor());
executejQuery( webEngine, new String(Files.readAllBytes(Paths.get("record.js"))));
webEngine
是一个 JavaFX Web 引擎,用于加载某些网站。
RecordProcessor如下:
public class RecordProcessor {
public void process(Object object, String returnValue, String action) {
System.out.println(action);
}
}
现在在我的 record.js 中,我有一个像这样的 jquery 函数:
$(document).ready(function(){
$('*').click(function(event) {
clickController.process(event.target, "someString", "click");
});
}
clickController
是用于访问 RecordProcessor 的 process
方法的句柄。
问题是,当我单击网页中的某个元素时,process
方法会被多次调用。我不知道为什么。谁能解释一下发生了什么事吗?另外,可能的解决方案?
例如,“click”在控制台中多次打印,并且数量不是恒定的。每次执行时,它都会打印不同的次数。
最佳答案
问题出在这一行:
$('*').click(function(event) { ...
*
告诉 jQuery 将“点击”绑定(bind)到页面上的每个元素。 DOM 是分层的,默认情况下事件将传播到 DOM 上的所有元素。
您是否考虑过绑定(bind)到文档
?
$(document).click(function(event) { ...
关于java - Jquery到Java方法调用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31153675/