2013-02-21 65 views
1

可以很容易地聽,選擇的改變:jQuery的選擇

var redirect = function() { 
    return window.location = $(this).val(); 
}; 

$('body').on('change', '#nav-select', redirect); 

但是關於追趕已選定的選項(無change事件對我們來說)的選擇如何?

嘗試:

$('body').on('click', '#nav-select option', redirect); 

不工作...

編輯:要清楚:

我有一個默認選中的選項foo一個選擇。我想趕上這樣的:

  1. 用戶點擊選擇
  2. 選擇選項foo,它已被選中(無變化事件)
+0

如果選擇裝有一個選項中選擇你的意思是? – 2013-02-21 20:30:37

回答

-1

嘗試使用「選擇」和「點擊」起來。像

$('body').on('change', '#nav-select', redirect); 

$('body').on('click', '#nav-select option', redirect); 
+0

你完全看完了這個問題嗎?我寫了完全一樣的文字說明,它不起作用。 – mreq 2013-02-21 20:43:52

+0

哎呀,對不起!我的意思是點擊選擇,而不是選項! – 2013-03-02 20:05:31

0

東西,你可以指定「點擊」的選項元素管理器在jQuery和可選項元素上觸發一個「click」事件,也使用jQuery,那麼這將調用您「點擊」處理程序。

但是,選項元素上沒有「點擊」事件,所以實際點擊它(用鼠標)不會產生點擊事件。它將在select元素上創建「更改」事件,但前提是您單擊了未選中的選項。

例子:

<select id="testSelect"> 
    <option value="1">1</option> 
    <option value="2" selected="selected">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
</select> 
<script type="text/javascript"> 
    $("#testSelect option").click(function (event) { 
     console.log("option clicked"); 
    }); 

    $("#testSelect option[value='2']").click(); // console outputs "option clicked" 
</script> 
+0

我知道(看問題),這就是爲什麼我問是否有其他方式。不管怎麼說,還是要謝謝你。 – mreq 2013-02-21 21:04:25

+0

您可以嘗試使用「焦點」事件並獲取/保存該點的選定值。稍後在「更改」事件處理程序中,如果選擇更改並更新保存的值,則可以捕獲它。 – Floremin 2013-02-21 21:16:45

1

所以我理解你的問題爲:

「我怎麼能運行代碼的選項,點擊,但選擇元素的值沒有改變的時候」

我的解決方案是存儲選擇加載的選項的初始值。然後將旋轉鎖連接到選擇元素。然後附加由旋轉鎖控制的點擊事件。然後看看點擊是否在最初加載的選項上。下面是結果:

工作演示:http://jsfiddle.net/NS4qr/3/

HTML

<select id="s1"> 
    <option value="1">1</option> 
    <option value="3">2</option> 
    <option value="3">3</option> 
</select> 

JS

$(function(){ 
    (function(){ 
     var loadedOption = $("#s1 option:selected").val(); 
     var isOpen = false; 

     $("#s1").blur(function(){ 
      isOpen = false; 
     }); 

     $("#s1").click(function(){ 
      isOpen = !isOpen; 
      if(isOpen)return; 
      if(this.value == loadedOption){ 
      //window.location = $(this).val(); 
      alert($(this).val()); 
      } 
     }); 
    })(); 
}); 
+0

第一次不工作http://jsfiddle.net/82YuS/1/ – mreq 2013-02-21 21:03:38

+0

@PetrMarek - 它爲我工作,提醒0(使用鉻)。 – 2013-02-21 21:04:49

+0

不在鉻24中.FF工作正常。沒有試過IE。 – mreq 2013-02-21 21:06:30