3
function showHideSoldTo() {
    if ($("#radio-text-sold-to").prop("checked")) {
        $("#select-sold-to").hide();
        $("#text-sold-to").show();
    } else if ($("#radio-select-sold-to").prop("checked")) {
        $("#text-sold-to").hide();
        $("#select-sold-to").show();
    }
}

$("#radio-text-sold-to").click(showHideSoldTo());
$("#radio-select-sold-to").click(showHideSoldTo());

所有这些都在一个文档就绪包装器中。

4

3 回答 3

7

从单击调用中的函数名称中删除 ()。所以..

$("#radio-text-sold-to").click(showHideSoldTo);
...
于 2013-10-28T19:46:57.263 回答
2

从点击调用中的函数名称中删除 ()

试试看

$("#radio-text-sold-to").click(showHideSoldTo);
$("#radio-select-sold-to").click(showHideSoldTo);
于 2013-10-28T19:47:44.447 回答
1

问题在于您传递给.click()方法的值应该是函数值,但您调用的是函数并因此传递了该函数的返回值(等于undefined

修复很简单,您需要删除()这两行中的

$("#radio-text-sold-to").click(showHideSoldTo());
$("#radio-select-sold-to").click(showHideSoldTo());

所以他们变成

$("#radio-text-sold-to").click(showHideSoldTo);
$("#radio-select-sold-to").click(showHideSoldTo);

在 javascript 中,任何标识符都标识一个值。该值可能是一个简单的值,例如一个整数,也可能是一个更复杂的对象,就像您作为回调或事件处理程序传递的值一样,它可能是一个函数值。

这两行代码基本相同

function myFoo() {}
var myFoo = function() {}

在后者中,明确将右侧分配给左侧。即函数值被分配给一个标识符。

于 2013-10-28T19:52:15.717 回答