将sexy-combo与国家/地区一起使用,将另一个与城市一起使用。每当用户选择一个国家时,我会用相应的Ajax城市填充第二个组合框,而不进行任何回发。
问题是性感的组合只在第一次加载页面时使用我的html选择呈现了漂亮的组合框。当我更新城市的html选项中的项目时,它没有被刷新,所以那里没有值......
你知道我必须调用哪个函数来“刷新”组合框,就像我在回发时会刷新一样吗?
非常欢迎任何提示!非常感谢。
答案 0 :(得分:4)
我缺少的是调用此函数:
$.sexyCombo.changeOptions($('#cities')[0]);
在我更改了使用javascript绑定的html选择控件的选项后,这会强制渲染城市的性感组合框。
@Sarzniak和@Majid:非常感谢你的答案,但这并不是我想要的,也许我还没有说清楚。答案 1 :(得分:0)
尝试使用jQuery的'live'绑定功能。 当您刷新项目时,事件不会再绑定到您的对象。
例如
$("myItem").live("click",function(){ codeHere });
这也会将'click'事件绑定到ajax创建的项目。
答案 2 :(得分:0)
如果您的旧代码如下所示:
$(document).ready(function() {
$('.sexify').sexify({options});
$('select[name="countries"]').change(function() {
var selected_country = $(this).val();
$('select[name="cities"]').load('cities.php?country=' + selected_country);
});
});
然后您只需添加一个函数.load
的回调,如下所示:
$(document).ready(function() {
$('.sexify').sexify({options});
$('select[name="countries"]').change(function() {
var selected_country = $(this).val();
$('select[name="cities"]').load('cities.php?country=' + selected_country, function() {
$(this).sexify({options});
});
});
});
答案 3 :(得分:0)
在脚本中创建另一个方法,例如在“changeOptions”下面:
custom_update: function($select) {
$select = $($select);
$select.each(function() {
if ("SELECT" != this.tagName.toUpperCase()) {
return;
}
var my_text = $("#"+ this.id + " option:selected").text();
var my_val = $("#"+ this.id + " option:selected").val();
var $this = $(this);
var $wrapper = $this.parent();
var $input = $wrapper.find("input[type='text']");
var $listWrapper = $wrapper.find("ul").parent();
$listWrapper.removeClass("visible").
addClass("invisible");
$wrapper.css("zIndex", "0");
$listWrapper.css("zIndex", "99999");
//$input.val("");
$wrapper.data("sc:optionsChanged", "yes");
var $selectbox = $this;
$selectbox.parent().find("input[type='text']").val($selectbox.find("option:eq(" + my_val + ")").text());
$selectbox.parent().data("sc:lastEvent", "click");
$selectbox.find("option:eq(" + my_val + ")").attr('selected','selected');
});
},
并称之为:
$.sexyCombo.custom_update($("#myselectlist"));