2016-06-30 41 views
0

我有一个空的select元素,其中动态添加option元素。 option元素有一个attribute,称为data-municipality使用数据属性动态选择不起作用

我在一个函数中使用了这个变量,但它好像函数只是获取“undefined”而不是实际的变量值。

这里是我的功能,即设置变量,并将其打印到控制台:

$("#fromMunicipality").change(function() { 
    fromMunicipalityCode = $("#fromMunicipality option:selected").data("municipality"); 
    console.log(fromMunicipalityCode); 
    }); 

这里就是我在使用变量fromMunicipalityCode功能:当我运行

$('#fromAddress').dawaautocomplete({ 
    adgangsadresserOnly: true, 
    params: { 
    kommunekode: fromMunicipalityCode 
    }, 
    select: function(event, adresse) { 
    } 
}); 

上面的函数fromMunicipality未定义,即使属性在控制台中更改,或者至少不会使用该函数中的值。

这里有什么问题?

谢谢!

+0

如果变更事件不会激发你只需要声明全局'fromMunicipalityCode',这将是不确定的。也许你只需要在页面加载时设置这个变量。所以在全局范围声明时:'var fromMunicipalityCode = $(“#fromMunicipality option:selected”)。data(“municipality”);'。现在在更改事件中,您需要使用新值重新初始化插件。但是你的问题是缺少一个MCVE,你的问题和你的预期行为将更加清晰 –

回答

0

dawaautocomplete变化事件中:

$("#fromMunicipality").change(function() { 
    fromMunicipalityCode = $("#fromMunicipality option:selected").data("municipality"); 
    console.log(fromMunicipalityCode); 
    $('#fromAddress').dawaautocomplete({ 
     adgangsadresserOnly: true, 
     params: { 
     kommunekode: fromMunicipalityCode 
     }, 
     select: function(event, adresse) { 
     } 
    }); 
}); 
+0

我会在页面加载时触发更改事件以获取默认值 –

+0

@ A.Wolff,我该怎么做呢?我需要两次调用dawaautocomplete函数,正确的 - 一个是页面加载,一个是更改? – hoegenhaug

+0

@hoegenhaug'$(“#fromMunicipality”)。change(function(){...})。change();'。现在,我不知道这个插件'dawaautocomplete'。检查DOC,它可以处理动态属性初始化 –

0

这就是我认为它应该工作,也。但昨天我发现有必要这样编码:

fromMunicipalityCode = $("#fromMunicipality option:selected").attr("data-municipality"); 

看看是否适合你。

1

试试这个:

$("#fromMunicipality").change(function() { 
    fromMunicipalityCode = $("#fromMunicipality option:selected").attr("data-municipality"); 
    console.log(fromMunicipalityCode); 
    $('#fromAddress').dawaautocomplete({ 
      adgangsadresserOnly: true, 
     params: { 
      kommunekode: fromMunicipalityCode 
     }, 
     select: function(event, adresse) { 
    } 
    }); 
}); 
+0

与Jayesh的答案发布有何不同** 12分钟**之前???编辑:好的,你使用'attr()',但'数据()'在这种情况下将工作得很好 –

+0

他已经使用数据,而不是attr。您说过,您是在动态添加选项,而不是直接将数据 - 市政值直接传递给期权的价值。 它会变得更容易获取价值。 –

+0

雅,你混在其他答案,这可能是,但在这里我想它不是。顺便说一句,我想你应该在页面加载时触发change事件:'$(“#fromMunicipality”)。change(function(){...})。change();' –