所以不確定到底發(fā)生了什么,但可以做出一些猜測(cè)。我對(duì) .on() 的理解是它意味著附加到所有動(dòng)態(tài)添加的元素。但這里似乎不起作用?;蛘?,如果我誤解了這一點(diǎn),那么我的實(shí)施方式就行不通。在文檔加載時(shí),我稱之為:$("#orderBox tbody tr").on( 'click', function ( e ) { selectRow($(this));} )其中 selectRow() 在 tr 元素上切換類(代碼如下)。加載文檔時(shí),表為空,因此通過(guò) addTableRow() 函數(shù)添加新行,該函數(shù)只是將 tr 附加到 tbody。添加該 tr 后,單擊它不會(huì)執(zhí)行任何操作。因此,我將 .on() 事件從文檔加載移至創(chuàng)建新行之后。function redrawOrderBox(){ $("#orderBox tbody tr").on( 'click', function ( e ) { selectRow($(this)); } )}function selectRow(row){ row.toggleClass('selected');}function addTableRow(items){ newRow = "<tr>"; newRow += "<td class=\"hide\">"+items[0]+"</td>" newRow += "<td>"+items[1]+"</td>" newRow += "<td>"+items[2]+"</td>" newRow += "<td>"+items[3]+"</td>" newRow += "<td>"+items[4]+"</td>" newRow += "<td class=\"hide\">"+items[5]+"</td>" newRow += "<td class=\"hide\">"+items[6]+"</td>" newRow += "<td class=\"hide\">"+items[7]+"</td></tr>"; $('#orderBox tbody').append(newRow); redrawOrderBox();}這有點(diǎn)管用。該類似乎每隔兩行就會(huì)“成功”切換一次。添加三行后,根據(jù)我在檢查器中的判斷或粘貼警報(bào)()時(shí),它在第三行成功觸發(fā),然后在單擊時(shí)在第二行觸發(fā)兩次(看起來(lái)什么也沒(méi)發(fā)生)。在第一排,它發(fā)射了三次,給人的印象是它工作得很好。所以我多次調(diào)用 click 事件 - 可能是因?yàn)槲腋郊恿?3 次。但是如果我嘗試在文檔加載中使用它,則什么也不會(huì)發(fā)生。我打算做的是修改 redraw() 函數(shù)以在重新附加之前刪除單擊事件。但感覺(jué)這樣做的方式是錯(cuò)誤的。最好的方法是什么?
Jquery .on() 不工作或觸發(fā)兩次
蕪湖不蕪
2023-07-29 16:21:36