改变事件不停止

时间:2017-07-22 10:34:43

标签: javascript jquery

我正在尝试更改Country事件时(ddlcountry)选择值,但更改事件会持续触发。

$(document).ready(function () {
    $('#ddlCountry').on('change', function () {
        if ($('#ddlCountry option:selected').index() > 0) {
            getStateDetails();
        }
    });
    $('#ddlState').on('change', function () {                
        if ($('#ddlState option:selected').index() > 0) {
            getCityDetails();
        }
    });
});

$('#ddlCountry').val(data.CountryID).trigger('change');
$('#ddlState').val(data.StateID).trigger('change');

如何阻止这种情况。

2 个答案:

答案 0 :(得分:1)

我认为您将在getStateDetailsgetCityDetails函数中获取数据变量的值,因此以下两行每次都会获得新值:

$('#ddlCountry').val(data.CountryID).trigger('change');
$('#ddlState').val(data.StateID).trigger('change');

然后他们会触发change事件。再次,当您真正从这些下拉列表中选择任何值时,jquery更改事件会触发并调用上述函数,然后循环继续。

要传递所选下拉选项的值,您可以这样编码:

$('#ddlCountry').on('change', function () {
    if ($('#ddlCountry option:selected').index() > 0) {
        getStateDetails($(this).val());
    }
});
$('#ddlState').on('change', function () {                
    if ($('#ddlState option:selected').index() > 0) {
        getCityDetails($(this).val());
    }
});

将它们的值作为参数传递给函数。

答案 1 :(得分:0)

通常在连续触发事件时我们可以使用以下来避免它:

  1. 在单个语句中使用off()和on()(即 .off()。在(函数(){}))。
  2. 将Javascript或Jquery代码移动到 其他js文件。
  3. 希望这有帮助!