我不能做多重删除时,我尝试我自己的东西和单一删除是有效的,但多重删除不工作,需要帮助!
// 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;
}
}发布于 2012-10-23 09:53:35
这就是问题:
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即可。例如:
$('.trSelected').map(function(index, item) {
return item.id.substr(3);
}只需小心映射,如果你想把item当作一个常规的DOM元素,使用item,但是如果你需要像.css()这样的jQuery东西,你需要用$包装item。即$(item)。或者,您可以使用$(this)来引用当前项,这样可能会更快。
祝好运!
https://stackoverflow.com/questions/13022276
复制相似问题