如何在jquery

时间:2016-10-17 03:52:01

标签: javascript jquery html web-deployment

在复选框更改事件中,其中一个javascript绑定切换操作。

稍后(在另一个脚本中)我想根据条件更改切换操作。

实施例。 脚本1:

$(document).ready(function () {
    var shipFields = $('.address1 input');

    $("input[name = 'same_as_bill']").on("change", function (evt) {
        toggleFields(shipFields, !$(this).is(":checked"));
    });

   function toggleFields(fields, show) {
        var inputFields = $("li", fields).not(".sameas, .triggerWrap");
        inputFields.toggle(show);
    }
}

脚本2:

$(document).ready(function () {

    $('li.sameas input').click(function (sender) {

          var target = $(sender.target);
          var selectedCountryValue = $('li.country select', target.closest('fieldset')).val();

          // determine data method based on country selected
          if (selectedCountryValue === "xxx") {
              ShowAddress(true, target);
          } else {
             ShowAddress(false, target);
          }
    });

    function kleberShowAddress(show, target) {
          if (show) {
               $('li.address).hide();
          } else {
               $('li.address).show();
          }
     }
});

我在这里的问题是,我的网站首先加载脚本1然后加载脚本2.因此,当脚本2执行操作时,切换操作排队并在脚本2发生更改后触发,将恢复我想要的变化。

有没有办法删除队列中的操作?或停止发生第一次请求。我不想使用.unbind()来停止触发脚本1的功能。我只想在符合脚本2中的条件时停止操作。

请注意:上面的功能会被修剪以显示更少的代码。

1 个答案:

答案 0 :(得分:1)

添加var isActive = true;并使用它来检入第一个脚本。 在脚本2中,您可以在任何时候想要禁用第一个脚本的功能时调用isActive = false,或者isActive = true重新启用它们。

您的代码如下:

//script1    
var isActive = true;
$(document).ready(function() {
    var shipFields = $('.address1 input');

    $("input[name = 'same_as_bill']").on("change", function(evt) {
        if (isActive) {
            toggleFields(shipFields, !$(this).is(":checked"));
        }
    });

    function toggleFields(fields, show) {
        if (isActive) {
            var inputFields = $("li", fields).not(".sameas, .triggerWrap");
            inputFields.toggle(show);
        }
    }
});

//script2
$(document).ready(function() {
    isActive = false;

    $('li.sameas input').click(function(sender) {

        var target = $(sender.target);
        var selectedCountryValue = $('li.country select', target.closest('fieldset')).val();

        // determine data method based on country selected
        if (selectedCountryValue === "xxx") {
            ShowAddress(true, target);
        } else {
            ShowAddress(false, target);
        }
    });

    function kleberShowAddress(show, target) {
        if (show) {
            $('li.address').hide();
        } else {
            $('li.address').show();
        }
    }
});