簡體   English   中英

是否有解決方法來觸發IE中的option.click事件?

[英]Is there a workaround to trigger an option.click event in IE?

我正在使用一個下拉列表,以允許用戶對搜索結果進行排序。 這些結果在表中,但並非所有可排序標准都由列表示。 可以通過單擊列標題或使用“排序依據”下拉列表對列進行排序。 用戶可以通過單擊已排序的列標題來反轉排序。 我正在嘗試在下拉菜單中復制此功能,但無法使其在IE7 / IE8中正常工作。

以下是在IE和Firefox中均可使用的現有代碼。 它會更改已排序的列,但不會更改排序方向。

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

這就是我試圖將其更改為它並且可以在Firefox中使用的功能。 它會更改已排序的列,如果已選擇已排序的列,它將更改排序方向。

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

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

要重申TJ 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);
  });
});

之所以起作用,是因為當您單擊選項元素時,單擊事件會在選擇元素上觸發。 通過檢測到您單擊了select元素的邊界,並檢查event.offsetY > this.offsetHeight ,可以使用jQuery觸發當前選擇的option元素的click事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM