Tablesorter动态设置输出窗口小部件选项

时间:2016-01-10 11:09:14

标签: javascript widget output html-table tablesorter

我正在使用Mottie的tablesorter分叉。我对javascript不是很有经验,但到目前为止,我已经完成了所有工作。这是问题所在: 现在我想在我的表上方有两个按钮,允许下载所有行或只下载所选行。

为此我有以下javascript代码部分工作。我只需要让它下载所有(!)行。

我做错了什么?

以下是输出所有内容的部分:

$('.downloadall').click(function(){
    var $table = $('.tablesorter');
    wo = $table[0].config.widgetOptions,
    saved = $table.find('.output-filter-all :checked').attr('class');
    wo.output_includeHTML  = false;
    wo.output_delivery = 'p';
    // d = download p = page
    wo.output_saveRows ='a';
    // a = all f=filtered
    $table.trigger('outputTable');
    return false;
});

这非常有效,包括设置所有其他输出选项。 以下代码完全相同,但我想要的只是选定的行。

$('.downloadselected').click(function(){
    var $table = $('.tablesorter');
    wo = $table[0].config.widgetOptions,
    saved = $table.find('.output-filter-all :checked').attr('class');
    wo.output_includeHTML  = false;
    wo.output_delivery = 'p';
    // d = download p = page
    wo.output_saveRows = saved;
    // a = all f=filtered
    $table.trigger('outputTable');
    return false;
});

我尝试过各种各样的东西,但没有运气。

2 个答案:

答案 0 :(得分:1)

因为我无法告诉表格HTML会发生什么。我不知道saved变量最终是什么,但似乎缺少为类名创建jQuery选择器的前导期。

wo.output_saveRows = '.' + saved;

无论如何,它让我觉得目前你不能根据其内容选择一行,所以我更新了saveRows选项,现在接受filter callback function,截至撰写本文时,目前只有可在master branch中找到,可以按如下方式使用:

$('.downloadselected').click(function(){
    var $table = $('.tablesorter'),
      wo = $table[0].config.widgetOptions
    wo.output_includeHTML  = false;
    wo.output_delivery = 'p';
    wo.output_saveRows = function(){
        // include row only if it has a checked checkbox
        return $(this).find('input[type="checkbox"]:checked').length > 0;
    };
    $table.trigger('outputTable');
    return false;
});

答案 1 :(得分:0)

我只是忽略了类名'.saved'当然不正确。最后,莫蒂指出了正确的方向。这是我原始问题的解决方案,只需使用正确的类名.checked和everthing按预期工作。:

$('.downloadselected').click(function(){
		var $this =$('#table');
		var $table = $('.tablesorter');
			wo = $table[0].config.widgetOptions,
			wo.output_includeHTML  = false;
			wo.output_delivery = 'p';
			// d = download p = page
			//saved = '.checked';
			// a = all f=filtered
			 wo.output_saveRows = '.checked';
		  $table.trigger('outputTable');
		  return false;
});