在flexigrid中多次删除

时间:2012-10-23 01:16:38

标签: php jquery flexigrid

当我自己尝试并且单个删除工作但多个删除无法正常工作时我无法进行多次删除需要帮助!

    // 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;
                } 
            }

1 个答案:

答案 0 :(得分: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
} 

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

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

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

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

要小心地图,如果你想把这个项目视为常规DOM元素,请使用item,但是如果你需要像.css()这样的jQuery,你需要将项目包装在$中。即$(item)。或者,您可以使用$(this)来引用当前项目,这可能会更快。

祝你好运!