2010-04-01 95 views
1

我正在使用下拉菜單來允許用戶對搜索結果進行排序。這些結果在一個表中,但並非所有可排序標準都以列表示。可以通過點擊列標題或使用「排序依據」下拉列來對列進行排序。用戶可以通過點擊排序的列標題來反轉排序。我試圖在下拉列表中複製此功能,但無法使其在IE7/IE8中正常工作。在IE中觸發option.click事件是否有解決方法?

以下是現有的代碼,適用於IE和Firefox。它會更改已排序的列,但不會改變排序方向。

$("#sortSelect").change(function() { 
    //change sort 
}); 

這就是我想改變它,它在Firefox中的作品。它會更改已排序的列,並且如果已排序的列已被選中,它將更改排序方向。

$("#sortSelect option").click(function() { 
    //change sort 
}); 

我希望有人知道一種方法來觸發option.click事件或知道一個很好的解決方法。

+2

FWIW,作爲用戶,我想我會發現一個相當奇怪的用戶界面。如果我正在查看一個下拉列表,如果我重新選擇已經選擇的選項,我不希望有任何改變。 – 2010-04-01 15:19:11

+0

是#sortSelect元素下拉樣式或列表樣式(即它是否具有大小屬性​​)? – SBUJOLD 2010-04-01 15:28:22

+0

@ T.J。 Crowder - 我正在根據用戶反饋進行更改。他們希望能夠在不顯示的列上反轉排序。 – 2010-04-01 15:33:13

回答

0

重申T.J. Crowder在評論中表示,這是對用戶界面的一個尷尬變化。也就是說,如果select不具有multiple屬性集,則可以區分單擊select元素並單擊option元素。在Internet Explorer中嘗試使用以下代碼:

$(document).ready(function() 
{ 
    $("#sortSelect").click(function (event) { 
    if (event.offsetY > this.offsetHeight) 
     $(this.options[this.selectedIndex]).click(); 
    }); 
    $("#sortSelect option").click(function (event) 
    { 
    alert('clicked option '+this.parentNode.selectedIndex); 
    }); 
}); 

它工作原理是因爲當您單擊某個選項元素時,click事件觸發select元素。通過檢測您在select元素的邊界外單擊檢查event.offsetY > this.offsetHeight,您可以使用jQuery來觸發當前選定選項元素的點擊事件。

+0

正是我在找的東西。我同意接口,並將考慮替代品。謝謝! – 2010-04-01 15:39:17

相關問題