Jquery 为什么remoteCommand操作呈指数增长?
我正在使用primefaces RemoteCommand组件vie jquery从html表单元格调用方法。但是,当我更新panel remoteCommand时,操作会调用多个方法。生长曲线呈指数型。在第一个动作中调用一次,在第二个动作中调用两次,在第三个动作中调用四次,依此类推。原因是什么?我该如何解决这个问题Jquery 为什么remoteCommand操作呈指数增长?,jquery,jsf,primefaces,Jquery,Jsf,Primefaces,我正在使用primefaces RemoteCommand组件vie jquery从html表单元格调用方法。但是,当我更新panel remoteCommand时,操作会调用多个方法。生长曲线呈指数型。在第一个动作中调用一次,在第二个动作中调用两次,在第三个动作中调用四次,依此类推。原因是什么?我该如何解决这个问题 <p:panelGrid columns="1" columnClasses="ui-grid-col-12" layout="grid" styleClass="ui-pa
<p:panelGrid columns="1" columnClasses="ui-grid-col-12" layout="grid" styleClass="ui-panelgrid-blank"
style="border:0px none; background-color:transparent;">
<p:panel id="tablePanel" header="#{courseConstraintBean.selectedCourse == null ? 'SEÇİLİ DERSİN ' :
(courseConstraintBean.selectedCourse.courseNameWithClass)}
HAFTALIK DERS TABLOSU"
style="margin: 0 auto; min-width: 600px; margin-top: 2%;">
<p:remoteCommand name="sendHourOrDay" actionListener="#{courseConstraintBean.changeLocationHourOrDayCondition(param.id)}" update="form:tablePanel"/>
<p:remoteCommand name="sendLocation" actionListener="#{courseConstraintBean.changeLocationCondition( param.hour, param.day)}" update="form:tablePanel"/>
<script>
$(document).ready(function () {
$('td').click(function () {
sendLocation([{name: 'day', value: $(this).attr('data-day')}, {name: 'hour', value: $(this).attr('data-hour')}]);
});
});
$(document).ready(function () {
$('th').click(function () {
sendHourOrDay([{name: 'id', value: $(this).attr('data-id')}]);
});
});
</script>
<p:messages id="classCourseChartMessage" showDetail="false" autoUpdate="false" closable="true" style=" margin-left: 2%; margin-right: 2%" />
<p:panel style="margin-left: 2%; margin-right: 2%; margin-top: 1%; margin-bottom: 0%; min-width: 550px; background-color: #F6FFFF">
<table width="100%" align="center" style="margin: 0px;">
<div id="head_nav">
<tr>
<th style="width: 16%; padding: 10px" data-id="times">DERSLER</th>
<th style="width: 12%;" data-id="d1">PZT</th>
<th style="width: 12%;" data-id="d2">SAL</th>
<th style="width: 12%;" data-id="d3">ÇARŞ</th>
<th style="width: 12%;" data-id="d4">PERŞ</th>
<th style="width: 12%;" data-id="d5">CUM</th>
<th style="width: 12%;" data-id="d6">CMT</th>
<th style="width: 12%;" data-id="d7">PZR</th>
</tr>
</div>
<tr>
<th data-id="h1">1. Ders</th>
<td style="background-color: #{courseConstraintBean.getLocationColorOfSelectedCourse(0, 0)}; font-size: 10px; color:#A8B4BB" data-hour="0" data-day="0">1</td>
<td style="background-color: #{courseConstraintBean.getLocationColorOfSelectedCourse(0, 1)}; font-size: 10px; color:#A8B4BB" data-hour="0" data-day="1">1</td>
<td style="background-color: #{courseConstraintBean.getLocationColorOfSelectedCourse(0, 2)}; font-size: 10px; color:#A8B4BB" data-hour="0" data-day="2">1</td>
<td style="background-color: #{courseConstraintBean.getLocationColorOfSelectedCourse(0, 3)}; font-size: 10px; color:#A8B4BB" data-hour="0" data-day="3">1</td>
<td style="background-color: #{courseConstraintBean.getLocationColorOfSelectedCourse(0, 4)}; font-size: 10px; color:#A8B4BB" data-hour="0" data-day="4">1</td>
<td style="background-color: #{courseConstraintBean.getLocationColorOfSelectedCourse(0, 5)}; font-size: 10px; color:#A8B4BB" data-hour="0" data-day="5">1</td>
<td style="background-color: #{courseConstraintBean.getLocationColorOfSelectedCourse(0, 6)}; font-size: 10px; color:#A8B4BB" data-hour="0" data-day="6">1</td>
</tr>
$(文档).ready(函数(){
$('td')。单击(函数(){
sendLocation([{name:'day',value:$(this.attr('data-day')},{name:'hour',value:$(this.attr('data-hour')}]);
});
});
$(文档).ready(函数(){
$('th')。单击(函数(){
SendHourRorDay([{name:'id',value:$(this.attr('data-id')}]);
});
});
德斯勒
压电陶瓷
萨尔
圣尔Ş
佩尔
中央机存储器
CMT
PZR
1.德尔斯
1.
1.
1.
1.
1.
1.
1.
您的单击事件似乎绑定了多次。这可能是因为您正在更新自己的p:panel
,其中包含脚本。(这应该不是问题,因为您正在使用$(document).ready(…)
)。
但是,为了解决一个事件的多个绑定问题,可以使用JQuery的unbind()
您是否检查了jQuery“click”处理程序是否被多次调用?如果是这样,那就是问题所在。可能是它被添加了多次?可能是,如果是,我应该怎么做?确保它没有被添加多次?如何?我对前端不太了解。首先检查是否添加了多次。怎么用?通过在javascript中添加console.log,或使用带有调试选项的浏览器开发人员工具
<script>
$(document).ready(function () {
$('td').unbind('click');
$('td').click(function () {
...
});
});
</script>
<td class="clickable-cell">...</td>
<td class="clickable-cell">...</td>
<td class="clickable-cell">...</td>
<td class="clickable-cell">...</td>
<script>
$('.clickable-cell').click(...);
</script>