在循环通过特定类的控件时无法访问attr

时间:2016-08-23 13:33:48

标签: javascript jquery html asp.net-mvc

在MVC 5网站上工作。我有一个特定的行,单击一个按钮,该行及其所有控件都被克隆。这是克隆的主行...

    T1                      T2
    R(A)
    A=A-50
    W(A)
                            R(A)
                            A=A+20
                            W(A)

    $(".grouping").change(function() {
    // loop thru all selecting dropdowns
    $("select option:selected").each(function () {
        alert($(this).attr('id') + '>>>' + $(this).text());
        if ($(this).hasClass('grouping')) {
            // do the comparison, blah blah blah
            alert($(this).val());
        } else { 
            // for debug
            alert('class: ' + $(this).attr('class'));
        }
    });
 });

行div的添加/克隆效果很好。现在,我想做的就是这个。当我在下拉列表中选择一个新项目时,使用类"分组"然后将它与PREVIOUS"分组"进行比较落下。如果它们相等,则将div的背景颜色设置为不同的"交替"颜色。 (基本上这样做的目的是这是一个高级数据过滤模式,我想对组进行颜色编码。因此,如果前2个下拉列表是组1,则背景为白色,组2是交替颜色,组3是白色等等...只是为了在美学上帮助用户看到他的"行和#34;行。希望这是有道理的。)

问题是我似乎无法访问class或id属性等等......作为测试代码我写了这个:

getUserMedia

问题是attr(' id')和attr(' class')显示 undefined 。我能做错什么?我相信我正试图正确访问这些属性?

其次,对于主循环,当然,它通过所选的所有下拉菜单循环。我希望它只能通过' 分组'类。有没有更有效的方法来实现这一目标?谢谢!

2 个答案:

答案 0 :(得分:1)

我只是想评估每个下拉列表中具有“分组”类的选定值。

您可以使用类选择器定位元素,然后使用.val()

获取所选值
$(".grouping").each(function () {
    alert($(this).val());
});

答案 1 :(得分:1)

您正在遍历所有选定的option字段。

您需要遍历select元素。

所以,我认为你只需改变这一行:

$("select option:selected").each(function () {

对此:

$("select").each(function () {

希望它可以帮助你。