2017-08-22 180 views
-1

在標記爲重複之前,我已經看了下面的問題,沒有任何工作適合我。JQuery點擊事件需要雙擊

jQuery click event requires double click to work

Click and double-click event firing(鬆散realted)

我有需要在某些情況下,一個單一的點擊,並在大多數人雙擊一個jQuery事件。

請參閱小提琴https://jsfiddle.net/SimonPrice/6e9acbo6/5/

在這撥弄你會看到數據的精確表示,在花費和合攏功能不這麼工作,我已經刪除它們的功能從JavaScript的窗口,以避免彈出窗口分心\警報。

在小提琴中,您將看到一個嵌套表格,其中嵌套表格具有嵌套表格。 (我繼承的代碼)。

使用此代碼

$(document).ready(function() { 

$(document).on('click', '.up', function() { 
    shiftRow($(this)); 
}); 
$(document).on('click', '.down', function() { 
    shiftRow($(this)); 
}); 

}); 

這是從第一個環節所提出的答案,我不能得到這個工作,我仍然不得不雙擊。

我也試過它在文檔,表格,tr和td元素以及類的單擊事件它自己。

我需要這個工作在一個單一的點擊,將不勝感激,如果任何人都可以幫助我看到我正在犯的錯誤。

+0

您試圖讓展開/摺疊按鈕工作,更正? – freginold

+1

@freginold否,表格的另一面,你會看到一個向上和向下箭頭...忽略expand \ collapse按鈕。在實際應用中工作正常,只是不在小提琴 –

回答

3

我已經添加了額外的日誌到您的函數:

function shiftRow(rowbObj) { 
console.log("up or down arrow clicked"); 
var row = $(rowbObj).closest("tr"); 
console.log(row[0].rowIndex); 
var thisTable = row.closest("table"); 
if ($(rowbObj).is(".up")) { 
    if (row[0].rowIndex > 0) { 
    console.log("current: "+row.text() + " prev: " +row.prev().text()); 

所以它幫助我意識到你有額外的隱藏TR該行的內容(可能是擴大) - (

<tr id="content_0_36000" class="content" style="display: none;"> 

) 所以,當你點擊一次,你替換之間的顯示和隱藏,這就是爲什麼它似乎沒有任何反應

+0

好抓!在我這邊,我發現'$(this)'作爲'rowbObj'發送到函數,然後像'$(rowbObj)'那樣使用,這並不是很好......另外,'< a class =「up」>'是無用的......類應該放在''...)+1 –

+0

@LouysPatriceBessette你可以展開爲什麼它不太好做這個?你能提供一個關於你發現的東西的答案,以及它將如何完成 –

+0

關於隱藏行,是的,那是我最初提供的東西,然後持有下一個嵌套表......所以是的,我看到你的觀點這個也是 –