Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新组件后Javascript不工作_Javascript_Jquery_Jsf_Primefaces_Datatable - Fatal编程技术网

更新组件后Javascript不工作

更新组件后Javascript不工作,javascript,jquery,jsf,primefaces,datatable,Javascript,Jquery,Jsf,Primefaces,Datatable,上下文 在对话框中,用户可以按按钮填充名为qPdt的现有数据表。当他点击一行时,我希望将行文本插入到某个输入文本区域 问题 结果是,如果我打开对话框并单击任意一行,一切都会正常工作,并符合预期。但是如果我打开对话框并按下按钮,我的脚本将不再工作/不再被调用。我必须关闭对话框并重新打开它才能使脚本正常工作 可能我缺少一些javascript/jsf基础知识。任何提示都很好:) 代码 <script> $('#accordion\\:duoDlgForm2\\:qPdt tr').on(

上下文
在对话框中,用户可以按按钮填充名为qPdt的现有数据表。当他点击一行时,我希望将行文本插入到某个输入文本区域

问题
结果是,如果我打开对话框并单击任意一行,一切都会正常工作,并符合预期。但是如果我打开对话框并按下按钮,我的脚本将不再工作/不再被调用。我必须关闭对话框并重新打开它才能使脚本正常工作

可能我缺少一些javascript/jsf基础知识。任何提示都很好:)

代码

<script>
$('#accordion\\:duoDlgForm2\\:qPdt tr').on('click', function() {
  var $item = $(this).closest("tr").find("td:nth-child(1)").text().trim();
  $("#accordion\\:duoDlgForm2\\:rt1Selected").append($item);
  });
</script>

$(“#accordion\\:duoDlgForm2\\:qPdt tr”)。在('click',function()上{
var$item=$(this.closest(“tr”).find(“td:nth child(1)”).text().trim();
$(“#手风琴\\:duoDlgForm2\\\:rt1Selected”)。追加($item);
});
也尝试过(位于表单内部和外部)


$(文档).ready(函数(){
$(“#accordion\\:duoDlgForm2\\:qPdt”)。在('click','tr',function()上{
var$item=$(this.closest(“tr”).find(“td:nth child(1)”).text().trim();
$(“#手风琴\\:duoDlgForm2\\\:rt1Selected”)。追加($item);
});
});
数据表:

<p:scrollPanel mode="native">  
  <p:dataTable id="qPdt" var="p" value="#{regelBean.queriedParams}" scrollable="false"
    emptyMessage="x" rowKey="#{p}" selection="" selectionMode="single">                            
    <p:column>#{p.name}
      <f:facet name="header" style="">Parameter</f:facet>
    </p:column>
  </p:dataTable>
</p:scrollPanel>

#{p.name}
参数
按钮打开对话框

<p:commandButton id="selectButton" value="?" update=":stmtDetailForm :newDuoDlg" oncomplete="PF('newDuoDialog').show()" actionListener="#{regelBean.selectButtonHit(tVar)}">

按钮填充数据表

<p:commandButton value="&lt;" update="qPdt regelDetail sp2" action="#{regelBean.findParams()}"/>


PF 4.0,IE9,与includes一起工作。

可能您正在更新对话框、手风琴或表单,这将导致事件崩溃。。。尝试将事件绑定到更大的文件上,如
文档

JS

现在调用
document.ready中的函数

阅读更多信息:


希望这有帮助

多亏了哈特姆·阿利姆,我才能够解决这个问题:-*

我将脚本绑定到scrollPanel,而不是datatable本身。这项工作:

$(document).ready(function() {
    $('#accordion\\:duoDlgForm2\\:scrollPanelID').on('click','tr',function() {
    var $item = $(this).closest("tr").find("td:nth-child(1)").text().trim();
    $("#accordion\\:duoDlgForm2\\:rt1Selected").append($item);
    });
});

可能您正在更新对话框、手风琴或表单,这将导致
onclick
事件崩溃。。。试着把这件事和更大的事情联系起来。。我喜欢外形。。无论如何,用对话框和按钮的完整代码更新帖子。好的,发布按钮,然后…按钮进行更新。但是为什么这会破坏
onclick
事件呢?我该怎么解决呢?你必须小心,
tr
选择器有点危险。。基本上,您将在页面中的每个tr标记上绑定此单击事件。当我使用此方法并添加警报时,单击时得到的是“oldParam”“oldParam”“oldParam”,下一次单击显示oldParam时需要的参数,但也要单击三次,有时是四次。为什么不止一次???为什么我需要点击两次?我的脚本是
$(document).ready(function(){$(document).on('click',…
我没有为函数使用名称,请不要在这里吹毛求疵;)没有这个,你的解决方案对我来说是没有用的。如果你拒绝回答这个问题,请给我一个指针
function bindDataTableSelection() {
   $(document).on('click', '.ui-datatable-selectable', function() {
     itemText = $('.ui-datatable-selectable.ui-state-highlight')
               .find("td:nth-child(1)").text().trim();
     $("#accordion\\:duoDlgForm2\\:rt1Selected").append(itemText);
   });
}
$(document).ready(function() {
    $('#accordion\\:duoDlgForm2\\:scrollPanelID').on('click','tr',function() {
    var $item = $(this).closest("tr").find("td:nth-child(1)").text().trim();
    $("#accordion\\:duoDlgForm2\\:rt1Selected").append($item);
    });
});