2013-04-26 17 views
0

JSFiddle選擇列表 - 檢查負載和變化

試圖評估在選擇列表中選擇哪一選項,當DOM加載,以及當有人改變選擇選項。

我以爲triggerHandler會導致我的功能開火?當頁面加載時,應該說選擇了值2。

<select name="select-2" id="select-2"> 
     <option value="1">1</option> 
     <option value="2" selected>2</option> 
     <option value="3">3</option> 
    </select> 

$(function() { 
    function ShowSelected() { 
     $('#select-2').change(function() { 
      if ($(this).val() == 1) { 
       alert('value 1 is selected'); 
      } else if ($(this).val() == 2) { 
       alert('value 2 is selected'); 
      } else if ($(this).val() == 3) { 
       alert('value 3 is selected'); 
      } 
     }); 
    } 
    $('#select-2').change(ShowSelected).triggerHandler("change"); 
}); 

回答

0

你應該看看使用:selected。例如,

$('select option:selected') ..... 
1

您的ShowSelected不是事件處理程序,它會註冊一個更改事件處理程序。

要使其工作改變它如下圖所示

$(function() { 
    function ShowSelected() { 
      if ($(this).val() == 1) { 
       alert('value 1 is selected'); 
      } else if ($(this).val() == 2) { 
       alert('value 2 is selected'); 
      } else if ($(this).val() == 3) { 
       alert('value 3 is selected'); 
      } 
    } 
    $('#select-2').change(ShowSelected).triggerHandler("change"); 
}); 

演示:Fiddle

1

你可以簡單地這樣做 - (看着你有什麼權利現在

ShowSelected(); // <-- bind event to your select-2 in function 
$('#select-2').triggerHandler("change"); // <-- trigger change event 

http://jsfiddle.net/mohammadAdil/g6GWV/

每次調用ShowSelected();你又結合改變事件的時候,你應該只使用你的函數來顯示所選擇的價值當你把它命名爲

+0

你的第二個例子不優化什麼...我會組織這樣的說法,但它並沒有讓它變得更好。優化它的方法是存儲'$('#select-2')'的結果,而不是調用兩次。 – Ian 2013-04-26 18:28:38

+0

好吧,你的意思是我只是正確地組織它。未優化...:O – 2013-04-26 18:31:08