2017-06-05 56 views
0

在我们的项目,我们有一个AjaxLink:检票AjaxLink擦除的onclick听众

<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()从一些条件来执行停止onclick()方法添加AjaxCallListener (它应该从你的js返回一个函数的名字,返回布尔值))

然后我为它定义一个监听器通过JS HTML元素(+ JQuery的),并把一些行为是:

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

它按预期工作,直到AjaxLink执行。然后我的onclick监听器自败出于某种原因,然后让它工作,我应该手动绑定。

你有任何想法,这是为什么(其他听众的擦除)发生,以及如何防止?

回答

1

我认为原因是由于服务器端的一些target.add(ajaxLinkOrParent)调用导致链接已在DOM中重新创建。老一与onclick属性被删除和新创建一个。

你应该使用jQuery“活”的,而不是结合,例如$(document).on('click', '[title]', function(evt) {showTooltip();})