Jquery 函数get调用多次
大家好,我假设我的移动应用程序中有两个html文件,分别是page1.html和page2.html。在page2.html中,我有一个表,在单击该行时,我显示了一个警报。若假设我从page1转到page2.html,那个么点击表格就会显示一次警报框。若我按下“后退”按钮,那个么它将转到page1.html。若我再次转到page2.html,点击表格行,那个么这次警报显示2次。如果我在第1页再次返回,在第2.html页再次返回,那么这次在单击行时,它会显示警报3次,以此类推 我的page2.html表格如下所示:Jquery 函数get调用多次,jquery,jquery-ui,jquery-mobile,cordova,Jquery,Jquery Ui,Jquery Mobile,Cordova,大家好,我假设我的移动应用程序中有两个html文件,分别是page1.html和page2.html。在page2.html中,我有一个表,在单击该行时,我显示了一个警报。若假设我从page1转到page2.html,那个么点击表格就会显示一次警报框。若我按下“后退”按钮,那个么它将转到page1.html。若我再次转到page2.html,点击表格行,那个么这次警报显示2次。如果我在第1页再次返回,在第2.html页再次返回,那么这次在单击行时,它会显示警报3次,以此类推 我的page2.ht
<div id="myTable" align="center" data-theme="b"></div>
<script type="text/javascript">
var theader = '<table border="1" id=\"tableId\">\n';
var colheader = '<tr id="headingtab" bgcolor="#D68B8B"><th>Name</th><th>Address</th><th>City</th><th>LTP</th><th>State</th><th>Country</th><th>Mob No</th></tr>\n';
tbody = colheader;
tbody += '<td>';
tbody += "QQQQQQQQQQQQQQQQQQQQQ";
tbody += '</td>';
tbody += '<td>';
tbody += "QQQQQQQQQQQQQQQQQQQQQ";
tbody += '</td>'
tbody += '<td>';
tbody += "QQQQQQQQQQQQQQQQQQQQQ";
tbody += '</td>'
tbody += '<td>';
tbody += "QQQQQQQQQQQQQQQQQQQQQ";
tbody += '</td>'
tbody += '<td>';
tbody += "QQQQQQQQQQQQQQQQQQQQQ";
tbody += '</td>'
tbody += '<td>';
tbody += "QQQQQQQQQQQQQQQQQQQQQ";
tbody += '</td>'
tbody += '<td>';
tbody += "QQQQQQQQQQQQQQQQQQQQQ";
tbody += '</td>'
tbody += '</tr>\n';
var tfooter = '</table>';
document.getElementById('myTable').innerHTML = theader + tbody + tfooter;
</script>
<script type="text/javascript">
$("#tableId tr td").live("click",function()
{
console.log("??????????????????????????????");
alert("Row Click");
});
</script>
</div>
变量theader='\n';
var colheader='nameAddressCitylTPStateContryMob No\n';
tbody=冷头;
tbody+='';
t车身+=“QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
tbody+='';
tbody+='';
t车身+=“QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
tbody+=''
tbody+='';
t车身+=“QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
tbody+=''
tbody+='';
t车身+=“QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
tbody+=''
tbody+='';
t车身+=“QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
tbody+=''
tbody+='';
t车身+=“QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
tbody+=''
tbody+='';
t车身+=“QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
tbody+=''
tbody+='\n';
var tfooter='';
document.getElementById('myTable').innerHTML=theader+tbody+tfooter;
$(“#tableId tr td”).live(“单击”,函数()
{
console.log(“?????????????????????????”;
警报(“行单击”);
});
我只希望每次单击时显示一次警报。怎么做?任何帮助都将不胜感激。提前谢谢。试试这个
$("#tableId tr td").click(function()
{
console.log("??????????????????????????????");
alert("Row Click");
});
编辑
使用jquery函数
这可能会帮助您由于每次加载page2.html时都会绑定事件处理程序,因此会出现问题。我猜这个页面是用Ajax加载的?这意味着每次加载页面时都会添加事件处理程序,而且由于它是Ajax,JavaScript事件处理程序仍然存在。事件处理程序将一直存在,直到您自己将其删除以完成页面重新加载 最好的解决方案是只在基本页面(执行所有ajax加载的页面)中添加一次事件处理程序 另一种解决方案是首先解除旧事件处理程序的绑定,然后添加新的事件处理程序
$("#tableId tr td").unbind('click').live('click'.....
更好的方法是使用jQuery的delegator方法:
$("#tableId").die('click', 'tr td').live('click', 'tr td'.....
如果我使用
e.stopImmediatePropagation()代码>作为:
$("#tableId").die('click', 'tr td').live('click', 'tr td', function (){
alert ("Click");
e.stopImmediatePropagation();
});
然后它给出了正确的结果,但是如果我使用'e.stopPropagation();那就不管用了
顺便说一句,感谢弗雷德里克、阿什瓦德·辛格、阿琼·特拉伊的时间和回应。如有其他建议,将不胜感激。谢谢。谢谢您的回复,但使用$(“#tableId tr td”)。单击(函数(),它不会显示警报(甚至不会显示单个警报)。查看Fidle。这不是你想要的吗?是的,你的代码在Fidle上工作,但在移动模拟器上不工作。如果我使用我的原始代码,那么它也在Fidle上工作,但在移动模拟器上不工作。我在最后一行看到一个额外的关闭标记。它没有任何开始标记。这是导致问题的原因吗?实际上它是主div,实际上不是额外的我没有在这里给出整个html页面(意味着该div的开始)。如果我使用$(“#tableId”).off('click','tr td').on('click',function(){alert('click')),function(){alert('click')),那么它不会显示任何警报。您需要。on('click','tr td',function(){alert('click');});
我也尝试过。on('click','tr td',function(){alert('click');});但它不起作用,它没有显示警报。只有$(“#tableId”).live('click'、'tr td',function()起作用,但与多个警报框的问题相同。感谢您的响应,这里使用$(“#tableId”).die('click'、'tr td')。live('click'、'tr td',function(){alert(“Cliasck”);});它现在显示警报,但仍然存在多个警报问题。感谢您的响应,但使用$(#tableId tr td)。一个(“单击”,函数()警报不显示。
$("#tableId").die('click', 'tr td').live('click', 'tr td', function (){
alert ("Click");
e.stopImmediatePropagation();
});