2013-06-21 108 views
0

我試圖得到一個下拉的選項的值。就緒(上有選擇標記的ID),打開網頁

時,使用

$(document).ready(function() { 

    $('#cat_list').ready(function(){ 
    var category = $(this).val(); 
    alert(category); 
    }); 

}); 

我得到一個空白警報。

但使用.change(選擇下拉菜單裏面別的東西時),下面的代碼工作完全具有相同功能的

$(document).ready(function() { 

    $('#cat_list').change(function(){ 
    var category = $(this).val(); 
    alert(category); 
    }); 

}); 

最後,這個工程使用基本javascript和它會開放成功的值,刷新,在表單提交失敗,...等

$(document).ready(function() { 

    $('#cat_list').ready(function(){ 
    var e = document.getElementById("cat_list"); 
    var category = e.options[e.selectedIndex].value; 
    alert(category); 
    }); 

}); 

感謝您的幫助,爲什麼第一個版本。就緒+ $(本).VAL();失敗

+0

你就不能使用$( '#cat_list'),而不是$(這)?只要你使用id就可以了。 –

+1

檢查DOC:<< .ready()方法只能在匹配當前文檔的jQuery對象上調用,因此可以省略選擇器>> http://api.jquery。com/ready /在你的代碼中,'this'是指文檔 –

+0

你不需要爲你的元素準備好''回調函數,因爲你已經在使用它了'document' – sdespont

回答

1

正確的代碼是:

$(document).ready(function() { 
    var category = $('#cat_list').val(); 
    alert(category); 
}); 
+0

謝謝大家 – mitt

1

$(文件)。就緒本身意味着整個說明書(包括#cat_list)準備被處理。你爲什麼要檢查一個元素是否準備好了?

,你可以直接使用元素的值一樣

$('#cat_list').val();

0

文檔說.ready

指定要執行時,DOM完全加載的功能。

而且3種可能的使用情況是:

    (文件)。就緒(處理)
  • $()準備就緒(處理器)(這是不推薦)
  • $
  • $(處理器)

但是你其實可以分配.ready的任何元素,它會被觸發:

$('#cat_list').ready(function(){ 

}); 

此代碼被解僱。 但是this裏面的.ready功能總是指document

它會以這種方式工作:

$(document).ready(function() { 
    $('#cat_list').ready(function(){ 
     var category = $('#cat_list').val(); 
     alert(category); 
    }); 
}); 

但實際上,你的代碼是過度設計:

$(document).ready(function() { 
    var category = $('#cat_list').val(); 
    alert(category); 
}); 
+0

非常感謝您花時間幫助新手:),這有助於我瞭解自己做錯了什麼 – mitt