避免在document.ready中触发.change()事件

时间:2013-02-26 14:30:05

标签: jquery linked-list onchange dynamic-data document-ready

我有一个代理机构DB。每个机构都有(其中包括)3个具有动态/ ajax选项的链式选择:
- 国家
- 州
- 位置

添加代理商时:如果用户更改了国家/地区选择,则其.change()事件将触发并在“州”选择中加载该国家/地区的状态,依此类推。

当用户修改代理商的信息/数据时,问题就会出现。我在相应的选择中加载(使用php)当前机构的国家,州和位置,但是当(document).ready触发时,选择会被更改。

虽然我想让change事件的动态保持适用于每个动态链式选择,但我该如何避免.change()(document).ready被触发?我的意思是,“第一次”事件发生

链式代码选择
http://jsfiddle.net/LWPVm/

也许是另一个想法?

非常感谢

2 个答案:

答案 0 :(得分:1)

$(document).load(function(){
   $db.change(function(){
      event.stoppropagation();
});

将停止传播。应该在页面加载时工作。注意不要在document.ready()时调用此函数,因为传播将被整体停止,你也可以使用:

$db.change(function(){
   event.preventDefault();
});

答案 1 :(得分:1)

我可以通过删除最后一个.change()来解决这个问题。打电话给每个功能。
这个.change被迫在(文件).ready上发起事件。我现在记得我需要这样链接选择工作正常。希望这对其他人有用。

jQuery('#selProvincia').change(function(){
var val = this.value;
jQuery.post('<?php echo site_url("funciones_ajax/obtener_departamentos"); ?>/'+val, 
    {  },
    function(data) {
        var sel = jQuery("#selDepartamento");
        sel.empty();
        for (var i=0; i<data.length; i++) {
            sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '</option>');
        }
    }, "json"); }).change();