从匿名函数返回所选项的长度

时间:2014-09-14 04:49:55

标签: jquery

我写了一个匿名函数来帮助我在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>

2 个答案:

答案 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()