出于某种原因,当我在下面提醒时,我只能找到第一个选项然后它存在我的整个功能。它永远不会遍历每个选项:
function SelectAlbumOption(iAlbumID, iAlbumDropdownID)
{
var dropdownID = '#' + iAlbumDropdownID;
$(dropdownID).each(function(index, currentOption)
{
alert("(currentOption).attr('value'): " + $(currentOption).attr("value"));
if($(currentOption).attr("value") == iAlbumID)
{
alert("matched option");
$(currentOption).attr("selected", "yes");
return false;
}
});
}
在调用上面的函数之前,我向该选择添加了选项,因此在调用此函数之前它们确实存在。
答案 0 :(得分:6)
要获得选项,您需要通过它们进行迭代,而不是<select>
本身,如下所示:
var dropdownID = '#' + iAlbumDropdownID + ' option';
目前,它正在迭代<select>
元素的集合(只有其中一个),并为您提供价值。如果您希望<option>
您的选择器需要归结为那些。
另外,您应该将selected
设置为true
或"selected"
而不是"yes"
(尽管它会在幕后转换为true
)。另外请注意:$(currentOption).attr("value")
可以只是this.value
,不需要将它包装在jQuery对象中来获取该属性。
顺便说一句,似乎你基本上重新创建了.val()
function,你有什么理由不这样做吗?:
$('#' + iAlbumDropdownID).val(iAlbumID);
它应该与您当前正在进行的操作具有相同的效果,没有警报(假设这些是用于调试)。
答案 1 :(得分:1)
您是否正在离开代码的关键部分?因为您没有告诉我们您是否多次调用 SelectAlbumOption
。
您的函数使用ID并在1个元素上执行.each
(唯一ID)。
你的意思是
var dropdownID = '#' + iAlbumDropdownID;
$('option', dropdownID).each();
或者
$(dropdownID + ' option').each()