javascript - each() on select 不迭代

标签 javascript jquery

出于某种原因,当我在下面发出警告时,我只进入第一个选项,然后它就存在我的整个功能。它从不遍历每个选项:

    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;
            }
        });
    }

就在调用上面的这个函数之前,我向那个选择添加了选项,所以它们在这个函数被调用之前就存在了。

最佳答案

要获得选项,您需要遍历它们,而不是 <select>本身,像这样:

var dropdownID = '#' + iAlbumDropdownID + ' option';

目前它正在遍历 <select> 的集合元素(仅其中之一)并为您提供它的值(value)。如果你想要 <option>您的选择器需要深入到那些。

你还应该设置 selectedtrue"selected"而不是 "yes" (尽管它在幕后被转换为 true)。另一张纸条,这个:$(currentOption).attr("value")可以是this.value ,无需将其包装在 jQuery 对象中即可获取该属性。


顺便说一句,您似乎基本上重新创建了 .val() function ,你有什么理由不这样做吗?:

$('#' + iAlbumDropdownID).val(iAlbumID);

它应该与您当前正在执行的操作具有相同的效果,但没有警报(假设那些用于调试)。

关于javascript - each() on select 不迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3389279/

相关文章:

javascript - 在多个地方放置相同的 dojo datagrid

javascript - 是否可以创建与 Java 等效的 UUID 生成器的 Javascript 版本

jquery - DataTable实例获取HTML元素ID

javascript - 如果我有一个 lat/lng,我假设它位于 0,0 那么我如何计算另一对 lat/lng 的 x, y 坐标?

javascript - jquery中的简单数学

javascript - 使用 Jquery 的图表

javascript - JQuery Hide() 在按钮中使用时不隐藏元素

JavaScript/jQuery 闭包函数语法

javascript - Vagrant 和 javascript 的错误可能是由于行结尾造成的

javascript - 如何通过 jQuery 获取文本元素的当前值