当我勾选所有复选框并clcik删除按钮时,为什么它没有取出ID?
但是当我在下拉过滤器
下选择somestatus时,同样的事情正在发挥作用http://jsfiddle.net/cdkLkcdk/19/
这是我的代码
$(document).on('click', '#deletebtn', function(event ) {
var $checked = $('#tablecontent').find(":checkbox:checked");
if (!$checked.length)
{
alert('Need to select atlease one checkbox button');
event.stopImmediatePropagation();
event.stopPropagation();
}
else
{
var ids = [];
$.each($checked, function(i,e)
{
var status = $(e).parent().parent().find('.label-status').text();
if ($(e).attr("id") != 'selectall' && status == $('#filterstatus').val())
{
ids.push($(e).attr("id"))
}
});
alert(ids);
}
});
答案 0 :(得分:1)
问题似乎出现在filterstatus
,如果您没有选择任何条件未处理的话
$(document).on('click', '#deletebtn', function (event) {
var $checked = $('#tablecontent').find(":checkbox:checked").not('#selectall');
var fstatus = $('#filterstatus').val();
var ids = $checked.map(function () {
var status = $(this).parent().parent().find('.label-status').text().trim();
return !fstatus || fstatus == status ? this.id : undefined;
}).get();
if (ids.length) {
alert('Need to select atlease one checkbox button');
event.stopImmediatePropagation();
event.stopPropagation();
} else {
alert(ids);
}
});
演示:Fiddle
答案 1 :(得分:1)
我检查了你的jsFiddle。问题发生在您进行的status == $('#filterstatus').val()
比较中。
我不确定它出错的地方(检查状态值似乎是正确的),但我将此行更改为:
if ($(e).attr("id") != 'selectall' && !$(e).is(":hidden"))
这确实解决了这个问题。
简短的解释:我不会过滤所选的值,而只采用可见的元素(="不隐藏",因为只有那些状态正确的元素在那一点可见)