overrule rowOnClick t:datatable

时间:2014-06-17 07:47:45

标签: javascript jsf datatable

我有一个触发rowOnClick事件的t:datatable。这是有效的,但我在列中有一个图标,当您单击该图标时,会打开一个弹出窗口。但它也会触发rowOnClick事件。我不想要那个,对于那个图标,我不想触发rowOnClick事件。

是否可以覆盖/否决数据表中某些列的rowOnClick事件。

<t:dataTable rowClasses="row1,row2" id="typelist" value="#{vehicle.vehicleTypeList}" rowOnClick="selectType(#{vehicle_types.id},#{vehicle_types.reference})">

...
...
...

  <t:column id="carinformation" >
    <h:outputLink styleClass="listicons" value="#" onclick="popup=window.open('vehicle/detail.xhtml?vehicleid=#{vehicle_types.id}','vehciledetails','width=800,height=500,resizable=yes,scrollbars=yes');popup.focus();return false;" >
      <img src="images/information.gif" title="${msg.vehicle_information}"/>
    </h:outputLink>
  </t:column>   
</t:dataTable>  

1 个答案:

答案 0 :(得分:1)

DOM元素可以互相嵌套。不知何故,父母的处理程序即使你点击它的孩子也会工作。

原因是事件冒泡。

要停止此操作,请将event.stopPropagation();添加到图片链接onclick,这样看起来像这样:

<h:outputLink onclick="event.stopPropagation(); popup=window.open('vehicle/detail.xhtml?vehicleid=#{vehicle_types.id}','vehciledetails','width=800,height=500,resizable=yes,scrollbars=yes');popup.focus();return false;" >
  <img src="images/information.gif" title="${msg.vehicle_information}"/>
</h:outputLink>

阅读更多: