关键代码在dwz.database.js中:
selectedTodo: function(){
function _getIds(selectedIds, targetType){
var ids = "";
var $box = targetType == "dialog" ? $.pdialog.getCurrent() : navTab.getCurrentPanel();
$box.find("input:checked").filter("[name='"+selectedIds+"']").each(function(i){
var val = $(this).val();
ids += i==0 ? val : ","+val;
});
return ids;
}
return this.each(function(){
var $this = $(this);
var selectedIds = $this.attr("rel") || "ids";
var postType = $this.attr("postType") || "map";
$this.click(function(){
var targetType = $this.attr("targetType");
var ids = _getIds(selectedIds, targetType);
if (!ids) {
alertMsg.error($this.attr("warn") || DWZ.msg("alertSelectMsg"));
return false;
}
var _callback = $this.attr("callback") || (targetType == "dialog" ? dialogAjaxDone : navTabAjaxDone);
if (! $.isFunction(_callback)) _callback = eval('(' + _callback + ')');
function _doPost(){
$.ajax({
type:'POST', url:$this.attr('href'), dataType:'json', cache: false,
data: function(){
if (postType == 'map'){
return $.map(ids.split(','), function(val, i) {
return {name: selectedIds, value: val};
})
} else {
var _data = {};
_data[selectedIds] = ids;
return _data;
}
}(),
success: _callback,
error: DWZ.ajaxError
});
}
var title = $this.attr("title");
if (title) {
alertMsg.confirm(title, {okCall: _doPost});
} else {
_doPost();
}
return false;
});
});
}
});
根据代码
var _callback = $this.attr("callback") || (targetType == "dialog" ? dialogAjaxDone : navTabAjaxDone);
var targetType = $this.attr("targetType");
以及function _doPost(){
$.ajax({
<span style="white-space:pre"> </span>type:'POST', url:$this.attr('href'), dataType:'json', cache: false,
data: function(){
if (postType == 'map'){
return $.map(ids.split(','), function(val, i) {
return {name: selectedIds, value: val};
})
} else {
var _data = {};
_data[selectedIds] = ids;
return _data;
}
}(),
success: _callback,
error: DWZ.ajaxError
});
}
看出,只要在连接中加入targetType="dialog"就会执行dialogAjaxDone方法,当targetType属性不为dialog时,就会调用navTabAjaxDone方法,这样就实现了刷新navTab的方法<a title="确实要删除这些记录吗?" target="selectedTodo" rel="ids[]" href="__URL__/dels/navTabId/qa" targetType="navTab" class="delete"><span>批量删除</span></a>
或者直接将<a>属性中的callback设置为callback="navTabAjaxDone"调用navTabAjaxDone方法来刷新当前tab
<a title="确实要删除这些记录吗?" target="selectedTodo" rel="ids[]" href="__URL__/dels/navTabId/qa" callback="navTabAjaxDone" class="delete"><span>批量删除</span></a>