【发布时间】:2015-12-17 08:08:57
【问题描述】:
'use strict';
var PS = (function(){
var municipes = [{
"cod_prov": "01",
"cod_mun": "001",
"id": 0,
"name": "Alegría-Dulantzi"
}, {
"code": "47",
"name": "VALLADOLID"
}, {
"code": "48",
"name": "BIZKAIA"
}, {
"code": "49",
"name": "ZAMORA"
}, {
"code": "50",
"name": "ZARAGOZA"
}, {
"code": "51",
"name": "CEUTA"
}, {
"code": "52",
"name": "MELILLA"
}];
var provinceCssSelector = '.ps-prov';
var municipeCssSelector = '.ps-mun';
var provinceDefaultText = 'Provincia';
var municipeDefaultText = 'Municipio';
$().ready(function() {
// Set default text
$(provinceCssSelector).append($('<option>').text(provinceDefaultText).attr('value', -1));
$(municipeCssSelector).append($('<option>').text(municipeDefaultText).attr('value', -1));
// Populate province select
$.each(provinces, function(number, province) {
$(provinceCssSelector).append($('<option>').text(province.name).attr('value', province.code));
});
// When selected province changes, populate municipe select
$(provinceCssSelector).change(function() {
var selectedProvince = this.value;
$(municipeCssSelector).empty();
$(municipeCssSelector).append($('<option>').text(municipeDefaultText).attr('value', -1));
$.each(municipes, function(number, municipe) {
if (municipe.cod_prov == selectedProvince) {
$(municipeCssSelector).append($('<option>').text(municipe.name).attr('value', number.toString()));
}
});
});
$('.selectpicker').selectpicker('refresh');
});
}());
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<tr>
<td>Select where happenings occurred</td>
<td>
<select id="province" name="province" class="ps-prov selectpicker show-tick form-control" data-live-search="true" ></select>
</td>
</tr>
<tr>
<td>Select city</td>
<td>
<select id="city" name="city" class="ps-mun selectpicker show-tick form-control" data-live-search="true"></select>
</td>
</tr>
</table>
</form>
</div>
</html>
我正在尝试使用 bootstrap-select 来改进我的项目的样式,但是当动态构建选择的选项时,插件不起作用并且我没有发现错误。我已经按照answer 的建议包含了$('.selectpicker').selectpicker('refresh');,但我仍然无法实现我想要的。 HTML 如下,完美运行:
<tr>
<td>Select where happenings occurred</td>
<td>
<select id="province" name="province" class="ps-prov selectpicker show-tick form-control" data-live-search="true"></select>
</td>
</tr>
<tr>
<td>Select city</td>
<td>
<select id="city" name="city" class="ps-mun selectpicker show-tick form-control" data-live-search="true"></select>
</td>
</tr>
javascript 的工作方式如下
var provinceCssSelector = '.ps-prov';
var municipeCssSelector = '.ps-mun';
var provinceDefaultText = 'Provincia';
var municipeDefaultText = 'Municipio';
$().ready(function() {
// Set default text
$(provinceCssSelector).append($('<option>').text(provinceDefaultText).attr('value', -1));
$(municipeCssSelector).append($('<option>').text(municipeDefaultText).attr('value', -1));
// Populate province select
$.each(provinces, function(number, province) {
$(provinceCssSelector).append($('<option>').text(province.name).attr('value', province.code));
});
// When selected province changes, populate municipe select
$(provinceCssSelector).change(function() {
var selectedProvince = this.value;
$(municipeCssSelector).empty();
$(municipeCssSelector).append($('<option>').text(municipeDefaultText).attr('value', -1));
$.each(municipes, function(number, municipe) {
if (municipe.cod_prov == selectedProvince) {
$(municipeCssSelector).append($('<option>').text(municipe.name).attr('value', number.toString()));
}
});
$('.selectpicker').selectpicker('refresh');
});
});
有人知道如何使组合选择起作用吗?
【问题讨论】:
-
你能重现这个问题吗?
-
该插件无法正常工作可能是因为您需要使用 .on 函数,因为您在 jquery 中创建元素但该插件是从现有 DOM 实例化的