javascript函数返回值没有按预期方式调用

时间:2017-08-24 15:38:56

标签: javascript jquery asp.net function

我试图了解如何在函数的jQuery调用中将值返回给属性。

我有一个解决方案可以正常工作,但我想了解为什么我认为应该工作,而不是。

我有一个带有jQuery手风琴的ASP.NET页面。我希望手风琴根据代码隐藏文件提供的值通过页面上的隐藏值打开特定索引。

在我的测试中,我得到了这个例子:

var index = $("#Content_Intro_hidAccordionIndex").val();
if (index == null) index = 0;
else index = parseInt(index);
$(".accordion").accordion({
    collapsible: true,
    active: index,
    event: "click hoverintent",
    heightStyle: "content"
});

但是,这样做似乎不起作用:

$(".accordion").accordion({
    collapsible: true,
    active: function() {
        var ret = $("#Content_Intro_hidAccordionIndex").val();
        if (ret == null) ret = 0;
        else ret = parseInt(ret);
        return ret;
    },
    event: "click hoverintent",
    heightStyle: "content"
});

那为什么它不能以第二种方式运作呢?

3 个答案:

答案 0 :(得分:3)

它不起作用,因为您将select()(而不是返回的值)分配给必须为{{1的one_of()属性}}

为了使其成功,您必须立即调用 function(它被称为 IIFE (立即调用函数表达式) ))。

active

答案 1 :(得分:2)

active期望是整数,而不是函数。它不是回调,它只是应该激活哪个选项卡的值。

可以使用一个函数,但是需要立即调用该函数并将 result 调整为整数值。像这样:

$(".accordion").accordion({
    collapsible: true,
    active: (function() {
        var ret = $("#Content_Intro_hidAccordionIndex").val();
        if (ret == null) ret = 0;
        else ret = parseInt(ret);
        return ret;
    })(),
    event: "click hoverintent",
    heightStyle: "content"
});

只要整个操作产生一个整数值,它就可以是您想要的任何内联操作。但必须调用它并产生该值。手风琴工具本身不仅仅期望一个功能,也不会尝试执行该功能。

答案 2 :(得分:0)

Active未设置为您的函数的返回值,它被设置为函数本身,请尝试使用此javascript

function setActive() {
    var ret = $("#Content_Intro_hidAccordionIndex").val();

    if (ret == null) ret = 0;
    else ret = parseInt(ret);

    return ret;
}

$(".accordion").accordion({
    collapsible: true,
    active: setActive(),
    event: "click hoverintent",
    heightStyle: "content"
});