jquery,当动态创建行时,在表中按类查找下一个元素

时间:2015-10-22 15:47:30

标签: javascript jquery html

我在js中动态构建一个表,其中每一行都有相同的元素

         - input | input | **select** | **text** | **text** | **select**
Event 1  - input | input | **select** | **text** | **text** | **select** 
         - input | input | **select** | **text** | **text** | **select**  

Event 2     ...     ...       ....        ...        ...         ...

  ...

Event 10    ...     ...       ....        ...        ...         ...

正如您所看到的,选择有一个类="地点"对于所有3&t; sd' s 当我选择一个值时,我希望它只更新NEXT 文本而不是所有文本元素。

$("select.place").change(function () {
    $('.place').parent('td').next('#score').text("val")
});

这是使用val

更新所有文本文件

我正在生成这样的行并将它们附加到表中:

            '<td> ' +
            '<select class="place"> ' +
            '<option value="1">1</option> ' +
            '<option value="2">2</option>' +
            '<option value="3">3</option>' +
            '</select>' +
            '</td>' +
            '<td id="score"></td>' +
            '<td id="score"></td>' +
            '<td>' +
            '<select class="place"> ' +
            '<option value="1">1</option>' +
            '<option value="2">2</option>' +
            '<option value="3">3</option>' +
            '</select>' 

正如您所看到的,我没有设置id唯一的课程

我不确定在&#34;选择&#34;之后设置值的最佳方法是什么?然后相反地在第二个之前设置值&#34;选择&#34;每行。

任何帮助/想法都会受到欢迎。

选择更改的代码:

 $("select.place").change(function () {
    switch (parseInt($('select.place').val())) {
        case 1:
            $(this).parent('td').next('#score').text("10");
            break;
        case 2:
            $(this).parent('td').next('#score').text("8");
            break;
        case 3:
            $(this).parent('td').next('#score').text("6");
            break;
        default:
            $('select.place').val() == "0"
    }
});

CODE循环遍历表以从对象中获取值

$("input:button").click(function () {

    var values;


    values = "";
    $("table tr").each(function () {

        $(this).find("td").filter(':visible').each(function (index) {
         if(index =5)
         {
            if ($(this).find("text").val() != undefined)
                values += $(this).find("text").val() + ";";
            if ($(this).find("label").text() != undefined)
                values += $(this).find("label").text() + ";";

             if ($(this).find("input").text() != undefined)
                values += $(this).find("input").text() + ";";

             if ($(this).find("select option:selected").text() != "")
                values += $(this).find("select option:selected").text() + ";";


        }
        });
    });

    values = values.replace(/\;;/g, ";");
    console.log(values)

});

1 个答案:

答案 0 :(得分:1)

在你的更改功能中,你有一个jquery选择器,用于选择class =&#34; place&#34;并将文本应用于他们。请记住,在大多数事件处理程序中指的是已激活的html元素。所以:

$("select.place").change(function () {
    $(this).parent('td').next('#score').text("val");
});