jQuery .val()选择器混淆

时间:2010-05-17 18:15:33

标签: jquery jquery-selectors

我有点把自己写进一个角落,并希望有一个“简单”的出路。我正在尝试遍历我的页面上的一系列事情,并构建一个键:值对。这是我的结构:

<div class="divMapTab" id="divMapTab34">
    <div class="divFieldMap">
        <select class="selSrc" id="selTargetnamex"><options....></select>
    </div>
</div>
<div class="divMapTab" id="divMapTab87">
    <div class="divFieldMap">
        <select class="selSrc" id="selTargetnamex"><options....></select>
    </div>
</div>

这比这更复杂,每个divFieldMap div中都有很多选择元素。

这是我正在构建我的字符串的JS函数:

    function Save() {
        var sSaveString = '';

        $('.divMapTab').each(function() {
            var thisId = this.id;
            $('.selSrc', "#" + thisId).each(function() {
                var thisSubId = this.id;
                //alert(thisSubId);   <-- HERE IS THE PROBLEM
                var sTargetCol = thisSubId.replace('selTarget', '');
                var sValue = this.val();
                sSaveString += sTargetCol + '¸' + sValue + '·';
            });
        });
    }

在包含警告框和文本“这里是问题”的行上,我正在尝试获取“当前”选择输入元素的选定值,但该元素的id不是唯一的(我以为会是,但我搞砸了)。在“每种”类型的jQuery语句中,是否有一种好方法可以使用“this”来获取我真正想要的精确select元素,即使它没有唯一ID?

3 个答案:

答案 0 :(得分:3)

有效的HTML元素ID 必须是唯一的。如果您的文档包含重复的ID,则所有投注均已关闭。

如果您确实无法正确生成唯一ID,请改为开始使用类。

答案 1 :(得分:1)

我相信您可以使用$(this)创建对象的JQuery引用。这就是你追求的目标吗?

答案 2 :(得分:1)

那么,您只想在每个div中找到选择的值?

var myOptions = [];

$('.divMapTab').each(function()
{
    $(this).children('select').each(function()
    {
        myOptions.push(this.id, $(this).val());
    });
});
然后,

myOptions将包含从每个选择ID到其值的键值对。