2011-11-21 122 views
2

我設計了一個使用html和jQuery的自定義日曆。我想在開始日期突出顯示一系列k天(例如2天)onhover。我的日曆中的可用日期是'可用'類的td。這是我正在使用的代碼片段:jQuery next()td跨表格行

$(".monthly-calendar .available").hover(function() { 
    $(this).toggleClass("selected"); 
    $(this).next(".available").toggleClass("selected"); 
} 

不幸next()僅適用於父行。這會產生一個問題,當我懸停在一行中的最後一列,在這種情況下,我看到只有1列突出顯示。我如何重載next()以在後續行中選擇可用的TD?

小提琴可在http://jsfiddle.net/yL573/1/嘗試懸停在26日看到的問題。徘徊在26應該也突出27或下一個'可用'td。我想推廣這選擇k天(k> 1,在這種情況下,k = 2)

+1

您需要向我們展示兩行的html .. –

+0

您可以發佈您正在使用的表的標記嗎?否則,你只能得到猜測。這可能是有用的,但可能不像你想的那樣具體。 –

回答

6

它可能是這樣的東西? 我做了一個快速的jsfiddle爲你的概念

它的工作原理,甚至在不同行,即使中間有些日子已經不可用(沒有可用的類)

http://jsfiddle.net/dP3Bk/1/

讓我知道如果這是你期望它做的

它歸結爲不採取.next()但使用所有<td>元素的數組中的元素的索引。

的javascript:

$('#tableid td.available').hover(function(){ 
    // mouse in 
    var available = $('#tableid td.available'); 
    var i = available.index($(this)); 
    $(available[i]).add($(available[i+1])).addClass('current'); 
}, function(){ 
    // mouse out 
    $('td.current').removeClass('current'); 
}); 

此言 ,如果你有很多的元素這可能是一個性能命中。無論如何,我會在選擇器前添加表格的ID,而不是使用所有td.available元素。

+1

好的解決方案,但對於後代,請在這裏回答相關的JS代碼。 – Blazemonger

+0

感謝tonne Sander,在發佈jsFiddle問題之前,您發佈瞭解決方案的jsFiddle! – user1058322

0

謙虛的建議...檢查元素是行的第(n-1)孩子,甚至第n個孩子...如果這種情況下突出顯示下一行的第n個和第一個孩子的n-1和下一個行的第一個和第二個td的第n個元素...例如在一排10列中我們的元素是第9個那麼第10行和下一行第1列用選定的類設置....如果元素是第10次檢查最後一個孩子,然後選擇父親trs,然後選擇其前兩個孩子td ....條件應該足夠我猜...希望我有道理.....乾杯!

+0

不錯的建議,但我們可以概括爲k天的時間間隔嗎? – user1058322