最近这个问题一直让我发疯。在 .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 和“单元格编号”的文本值。现在下面的代码失败了,没有错误,但不会更改所选值。我需要它以以下方式工作,我从当前选择元素中获取 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,谢谢!
詹姆士
由于我的声誉,我无法回答自己的问题,所以这是我的解决方案:
好的,在找到解决方案后,这个问题现在真的让我很恼火。通常,当我遇到 jquery 插件问题时,我只会查看源代码并尝试解决这个问题,但是对于这个问题,我没有尝试过,这让我付出了代价。这是解决方案,答案很简单。
$("#" + e + " [role='select']").each(function () {
if($(this).css('display')=='none')
{
$(this).combobox("destroy");
}
$(this).combobox();
});
当查看我认为现在出现的来源时,它必须从某个地方获得它的价值。所以我手动设置了值:
$(this).val('9')
它在表单的第一次打开时起作用,但在第二次打开时不起作用,然后我意识到如果它存在我需要将其销毁,然后创建组合框。我敢肯定你的大师有一个更好的解决方案,但我很高兴我得到了这个工作