gpt4 book ai didi

javascript - Wicket AjaxLink 删除 onclick 监听器

转载 作者:行者123 更新时间:2023-12-02 12:57:48 27 4
gpt4 key购买 nike

在我们的项目中,我们有一个 AjaxLink:

<a title="some title.." wicket:id="addMessage">Add</a>

包含Page.class:

add(new AjaxLink() {
@Override
public void onClick(final AjaxRequestTarget target) {
//...
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
attributes.getAjaxCallListeners().add(new AjaxCallListener() {
@Override
public CharSequence getPrecondition(Component component) {
return "return isPropagationAllowed()";
}
});
}
}

(使用 getPrecondition() 方法添加 AjaxCallListener 会阻止 onclick() 方法在某些条件下执行(它应该返回名称js 中返回 boolean 值的函数))

然后我通过 js (+ JQuery) 为该 html 元素定义一个监听器,并为其添加一些行为:

$('[title]').each((i, elem) => elem.onclick = (event) => {
/* ..manually open a tooltip.... */
})

它按预期工作,直到 AjaxLink 执行。然后我的 onclick 监听器由于某种原因消失,然后为了使其工作,我应该手动绑定(bind)它。

您知道为什么会发生这种情况(删除其他听众)以及如何防止这种情况吗?

最佳答案

我认为原因是由于服务器端的一些 target.add(ajaxLinkOrParent) 调用,链接已在 DOM 中重新创建。具有 onclick 属性的旧属性将被删除,并创建一个新属性。

您应该使用 jQuery“实时”绑定(bind),例如$(document).on('click', '[title]', function(evt) {showTooltip();})

关于javascript - Wicket AjaxLink 删除 onclick 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367977/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com