首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择的插件不处理表中动态创建的行。

选择的插件不处理表中动态创建的行。
EN

Stack Overflow用户
提问于 2015-09-21 09:33:19
回答 1查看 2.3K关注 0票数 1

我必须说,我是JQuery的初学者,但我通常尝试自己解决问题。但是,现在我遇到了一个问题,我遇到了一个表,表中包含动态添加的行和复选框,用于单个删除或多个删除,所有操作都很正常,除非选择了行被添加,但无论我做什么都没有工作,但选择框不能正常工作。

HTML

代码语言:javascript
复制
<table id="dataTable">
<tr>
  <th><input type="checkbox" id="selectall" value="selectAll"/></th>
  <th>Field-1</th>
  <th>Field-2</th>
  <th>Field-3</th>
  <th>Field-4</th>
  <th>Field-5</th>
</tr>
  <tbody>
      <tr>
        <td><input type="checkbox"  class="check"></td>
        <td>
            <select name="input-1[]" class="chosen_select_L">
                <option></option>
                <option>Option 1</option>
                <option>Option 2</option>
                <option>Option 3</option>
            </select>
        </td>
        <td><input name="input-2[]" type="text" class="chosen_text"></td>
        <td><input name="input-3[]" type="text" class="chosen_text"></td>
        <td><input name="input-4[]" type="text" class="chosen_text"></td>
        <td>
            <select name="input-5[]" class="chosen_select_M">
                <option></option>
                <option>Option 1</option>
                <option>Option 2</option>
                <option>Option 3</option>
            </select>
        </td>
      </tr>
  </tbody>
</table>
<input type="button" value="Add Field" onClick="addRow('dataTable')" /> 
<input type="button" value="Remove Field" onClick="deleteRow('dataTable')"  /> 

JS

代码语言:javascript
复制
$(".chosen_select_L").chosen({
    disable_search_threshold: 10,
    no_results_text: "Oops, nothing found!"
  });
$(".chosen_select_M").chosen({
    disable_search_threshold: 10,
    no_results_text: "Oops, nothing found!"
  });

$(document).ready(function() {
    $('#selectall').click(function(event) {
        if(this.checked) { 
            $('.check').each(function() { 
                this.checked = true; 
            });
        }else{
            $('.check').each(function() { 
                this.checked = false; 
            });        
        }
    });
});

function addRow(dataTable) {
    var table = document.getElementById(dataTable);
    var rowCount = table.rows.length;
    if(rowCount < 11){
        var row = table.insertRow(rowCount);
        var colCount = table.rows[1].cells.length;
        for(var i=0; i<colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = table.rows[1].cells[i].innerHTML;
        }
    }else{
         alert("Maximum fields is 10.");

    }
}

function deleteRow(dataTable) {
    var table = document.getElementById(dataTable);
    var rowCount = table.rows.length;
    for(var i=2; i<rowCount; i++) {
        var row = table.rows[i];
        var chkbox = row.cells[0].childNodes[0];
        if(null != chkbox && true == chkbox.checked) {
            if(rowCount <= 1) {
                alert("Cannot Remove all fields.");
                break;
            }
            table.deleteRow(i);
            rowCount--;
            i--;
        }
    }
}

我试着给出不同的in或类名,从视觉上看,一切看起来都很好,但是除了没有动态创建的第一行之外,没有一个复选框实际工作。

我创建了一个小提琴给你们看。任何帮助都会很感激。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-21 12:41:31

这是修正后的小提琴。你需要摧毁选择使用

$(".chosen_select_L").chosen('destroy');

在获得innerHTML之前,然后在附加内容之后重新初始化它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32691779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档