加载页面时获取选择值

时间:2015-12-01 11:31:19

标签: javascript jquery

我有一个功能来检测值并做一些事情(对问题不重要)。页面准备好后我无法获取值,但选择值时,它可以找到值。如何将this传递给函数?

HTML

<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>

的Javascript

function check_select() {
    alert( "!" + $( this ).val() + "!" );
}

$('#select').on( 'change', check_select );

// Why is value not set?
$('#select').ready( check_select );

示例:http://jsfiddle.net/7en4op4j/

5 个答案:

答案 0 :(得分:1)

select个元素不会引发ready事件。要执行您需要的操作,您只需在check_select()处理程序本身中调用document.ready函数即可。由于函数中的逻辑,您还需要更改函数内this的范围。为此,您可以使用$.proxy()

$(function() {
    $('#select').on('change', check_select); // on change
    $.proxy(check_select, $('#select'))(); // on load
});

Updated fiddle

答案 1 :(得分:1)

您的小提琴设置为onDomReady,如果您将其更改为No wrap, in head,那么您可以利用jQuery对dom的处理。

此后,您要做的是调用您的方法,并将this的上下文设置为相关的select元素:

check_select.call($('#select')[0])

更新了小提琴:http://jsfiddle.net/7en4op4j/2/

答案 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/

希望有所帮助,祝你好运