.change()只运行一次而不是单击

时间:2017-08-25 17:53:24

标签: javascript jquery ajax twitter-bootstrap

我有一个自动运行HTML脚本的JS文件。一个函数putToggleCall()应该在每次单击多个切换中的一个时运行,而是在文档准备好之前运行一次(基于我的其他函数)。我从我的函数中的console.log()中知道这一点。目标是简化代码,以便所有引导切换都可以在更改时使用一个PUT调用函数(即onclick)。

var toggles = {
    "#rando": "random/url",
    etc..
};

function putToggleCall(toggle_id) {
    var value = $(toggle_id).prop("checked") ? 1:0;
    console.log(value)
    $.ajax({
        url: BASE_URL + toggles[toggle_id],
        type: "PUT"
    }).done(
    ).fail(function(data,textStatus,errorThrown) {
            alert(errorThrown);
    });
  };
 for (var i = 0; i < Object.keys(toggles).length;i++) {
    var toggle_id = Object.keys(toggles)[i]
    $(toggle_id).change(putToggleCall(toggle_id));
 })

1 个答案:

答案 0 :(得分:2)

您正在调用该函数,而不是引用它。

您需要一个包装匿名函数

$(toggle_id).change(function() {
    putToggleCall(toggle_id)
});

或仅引用功能

$(toggle_id).change(putToggleCall);

并找到另一种传递数据的方法(提示:它可用作this.id,甚至只能在函数中使用this