我写了一个匿名函数来帮助我在change
事件发生后获取所选项目的长度。
我有这段代码
var ac = {
x: $(".choose_salutation").change(function () {
var the_selected_len = $(".choose_salutation option:selected").val().length;
return the_selected_len;
})
};
alert(ac.x);
alert(Object.keys(ac.x).length);
/**
var b = 300 - ac.x;
var elem = $(".chars");
$("#le_message_compose").limiter(b, elem);
*/
为什么我打电话给ac.x
时能得到长度?
修改:HTML
<select class="form-control choose_salutation" name="anrede"><option selected value="keine_anrede">No Salutation</option><option value="Bon Jour">Bon Jour</option><option value="Good Morning">Good Morning</option><option value="Good Morning">Good Afternoon</option><option value="Good Evening">Good Evening</option><option value="How are you,">How are you</option></select>
答案 0 :(得分:1)
如果你想在外面访问它,只需在外面有一个变量,并从匿名函数中设置它的值。
var ac;
$(".choose_salutation").change(function () {
ac = $(".choose_salutation option:selected").val().length;
})
alert(ac); // undefined if change didn't occur, length value after change occurs.
答案 1 :(得分:0)
将您的jQuery修改为:
var ac = {
x: $( ".choose_salutation" ).change(function() {
var the_selected_len = $( ".choose_salutation option:selected" ).text().length;
alert(the_selected_len );
return the_selected_len;
})
};
function pop()
{
alert(ac.x.val().length);
}
HTML:
<input type="button" onclick="pop()" value="show the result again!"/>
您的代码无法正常工作,因为警报不在change()
事件中!
因此,当值发生变化时,将返回长度,但警报不会被调用!
希望这有帮助!
修改强>
您也可以撰写var the_selected_len = $( ".choose_salutation option:selected" ).val().length;
您也可以访问函数外部的返回值!但是你不会在价值变化上看到alert()
。
我认为,如果你在alert()
之外写change()
,这是非常明显的,你怎么看到价值变化的alert()
!