我有一个功能来检测值并做一些事情(对问题不重要)。页面准备好后我无法获取值,但选择值时,它可以找到值。如何将this
传递给函数?
<select id="select">
<option value="choise1">choise1</option>
<option value="choise2">choise2</option>
<option value="choise3" selected="selected">choise3</option>
<option value="choise4">choise4</option>
</select>
function check_select() {
alert( "!" + $( this ).val() + "!" );
}
$('#select').on( 'change', check_select );
// Why is value not set?
$('#select').ready( check_select );
答案 0 :(得分:1)
select
个元素不会引发ready
事件。要执行您需要的操作,您只需在check_select()
处理程序本身中调用document.ready
函数即可。由于函数中的逻辑,您还需要更改函数内this
的范围。为此,您可以使用$.proxy()
:
$(function() {
$('#select').on('change', check_select); // on change
$.proxy(check_select, $('#select'))(); // on load
});
答案 1 :(得分:1)
您的小提琴设置为onDomReady
,如果您将其更改为No wrap, in head
,那么您可以利用jQuery对dom的处理。
此后,您要做的是调用您的方法,并将this
的上下文设置为相关的select元素:
check_select.call($('#select')[0])
答案 2 :(得分:0)
稍微修改了你的代码。改为使用$(document).ready()
:
http://jsfiddle.net/7en4op4j/5/
function check_select(obj) {
alert( "!" + $( obj ).val() + "!" );
}
$('#select').on( 'change', function(){
check_select($(this));
} );
// Why is value not set?
$(document).ready( function(){
check_select($("#select"))
});
答案 3 :(得分:0)
在加载函数时,尝试使用'this'读取值,这是文档的对象。而不是使用'this'选择ID。
小提琴:http://jsfiddle.net/7en4op4j/1/
function check_select() {
alert( "!" + $( '#select' ).val() + "!" );
}
答案 4 :(得分:0)
没有针对dom元素的就绪事件,至少我从未以这种方式使用它。
当所有DOM都准备就绪时,您可以使用$(document).on('ready',callback)
执行某些(代码)。这就是为什么它不正确的原因。
而不是仅使用$(document).on('ready',function)
,并为更改事件保留 check_select 函数。
function check_select() {
alert( "!" + $( this ).val() + "!" );
}
$('#select').on( 'change', check_select );
$(document).on('ready',function(){
alert($('select').val());
})
live jsfiddle:http://jsfiddle.net/tornado1979/7en4op4j/7/
希望有所帮助,祝你好运