2

当我自己尝试某些操作并且单次删除正在工作但多次删除不起作用时,我无法进行多次删除需要帮助!

    // Flexigrid 
    if (com=='Delete')
            {

               if($('.trSelected').length>0){ 
                            if(confirm('Delete ' + $('.trSelected').length + ' rows?')){ 
                                var items = parseInt($('.trSelected').text(),10); 
                                    var itemlist =items; 
                                    for(i=0;i<items.length;i++){ 
                                          itemlist+= items[i].id.substr(3)+" "; //its contains no value for multiple delete
                                    }       
                                    $.ajax({
                   type: "POST",
                   dataType: "json",
                   url: "delete.php",
                   data: "items="+itemlist,
                   success: function(data){
                 alert("Query: "+data.query+" - Total affected rows: "+data.total);
                   $("#flex1").flexReload();
                   }
                 });
                }
                } else {
                    return false;
                } 
            }
4

1 回答 1

0

这就是问题:

var items = parseInt($('.trSelected').text(),10); 
var itemlist =items; 
for(i=0;i<items.length;i++){ 
    itemlist+= items[i].id.substr(3)+" "; //its contains no value for multiple delete
} 

只要有多个项目,就不能调用parseInt()jQuery 集合,因为它不知道如何处理它。相反,您可以将选择映射到解析.text()值列表中,例如

$('.trSelected').map(function(index, item) {
    return parseInt($(item).text(), 10);
}

这会将一组元素变成一个数字数组。但是你不能在下一个 for 循环的项目列表中使用它。因此,您需要简化逻辑,而不是返回已解析的 int 列表,只需返回需要处理的 id 即可。例如

$('.trSelected').map(function(index, item) {
    return item.id.substr(3);
}

请注意地图,如果您想将项目视为常规 DOM 元素,请使用项目,但如果您需要 .css() 之类的 jQuery 内容,则需要将项目包装在 $ 中。即$(item)。或者,您可以使用$(this)来引用当前项目,这可能会更快。

祝你好运!

于 2012-10-23T01:53:34.630 回答