这个问题最近让我很生气。在.each()中,我循环选择元素并将它们转换为jquery ui组合框。这很好。在设置所选值时,我遇到了问题。在我的同一个.each()中,我试图将所选的值设置为我在其他地方得到的值。
$("#" + e + " [role='select']").each(function () {
$(this).combobox();
var selId = '#ContactCategoryId';
var cellv = '9';
$(selId+" option[value=" + cellv + "]").attr("selected", 'true');
});
现在上面的代码工作正常,将组合框设置为值9和文本值“Cell Number”。现在,以下代码失败,没有错误,但不会更改所选值。我需要它以下面的方式工作,我从当前选择元素获取Id:$(this).attr('id')。我尝试了很多不同的东西,请有人在这里告诉我光明。
$("#" + e + " [role='select']").each(function () {
$(this).combobox();
var selId = '#'+$(this).attr('id');
var cellv = '9';
$(selId+" option[value=" + cellv + "]").attr("selected", 'true');
});
我正在使用JQuery 1.7和最新的JQuery UI,Thanx!
詹姆斯
由于我的声誉,我无法回答自己的问题,所以这是我的解决方案:
好的,这个问题在找到解决方案之后真的让我感到恼火。通常当我遇到jquery插件的问题时,我只是看看源代码并玩弄它但是对于这个问题我没有尝试,它花了我。这是解决方案,通常很简单。
$("#" + e + " [role='select']").each(function () {
if($(this).css('display')=='none')
{
$(this).combobox("destroy");
}
$(this).combobox();
});
当我看到我认为现在来源时,它必须从某个地方获得它的价值。所以我手动设置值:
$(this).val('9')
它在第一次打开表单但不是第二次然后我意识到我需要销毁它,如果它存在然后创建组合框。我相信你是一个大师有一个更好的解决方案,但我很高兴我有这个工作
答案 0 :(得分:0)
它不像想象的那么简单,因为组合框实际上不是select
元素...更新组合框元素更新选择元素但不是相反的方式...我能看到的唯一方法它是为了破坏组合框并重新创建它......这有效:
$("#divselect").children('select').each(function() {
$this = $(this); // cache $(this)
var cellv = '0'; // new value
// Destroy the combobox
$this.combobox("destroy");
// Unselect the currently selected option
$("option:selected",$this).removeAttr("selected");
// Select the option you want to select
$("option[value='"+cellv+"']",$this).attr("selected", "selected");
// Create the combobox again
$this.combobox();
});
另请注意..您不必这样做:
$("#showAnyCity").click(function() {
checkdiv();
});
你可以这样做
$("#showAnyCity").click(checkDiv);