在jquery中手动附加事件是否有任何限制?

时间:2013-08-19 13:01:37

标签: jquery events javascript-events tablefilter

我在我的应用程序中使用了picnet tablefilter。

http://www.picnet.com.au/resources/tablefilter/demo.htm

Tablefilter为每列生成输入。在输入中输入一些字符后,将触发过滤。

想要修复标题我制作了一个标题的副本并放置它,使它漂浮在tablefilter使用position: fixed的标题上方。

我使用id =“my_filtertable_filter_3”而不是id =“filtertable_filter_3”构建相同的输入,如下所示:

$( '#fixed_table thead' ).append( '<tr class="filters">' + $( '#container thead .filters' ).html() + '</tr>' );

$( '#fixed_table thead .filters input' ).each( function( index )
{
    $( this ).attr( 'id', 'my_' + $( this ).attr( 'id' ) );
});

所以现在我有一个标题看起来与演示中picnet tablefilter的标题完全一样,它流过原始标题,给人留下印象,标题是固定的。

此处发布了问题的插图(显然没有picnet情况): http://jsfiddle.net/bJ2K7/21/

我想要实现的目标:

当用户在id =“my_filtertable_filter_3”的输入中输入字符串时,此函数将为picnet tablefilter生成的输入输入相同的值。我还触发了keyup事件,(在读取picnets代码几个小时后)似乎触发了过滤器。

    $( '#fixed_table thead .filters input' ).keyup( function() 
    {
        var input_id  = $( this ).attr( 'id' ).substr( 3 );
        var input_val = $( this ).val() ;
        $( '#filtertable #hidden_thead .filters' ).find( 'input#filtertable_filter_3.filter' ).val( input_val );
        $( '#filtertable #hidden_thead .filters' ).find( 'input#filtertable_filter_3.filter' ).trigger('keyup');
    } );

虽然试图像这样抓住这个事件,但它似乎正在起作用:

$( '#filtertable_filter_3' ).keyup( function()
{
    alert( 'event caught' );
});

我的问题:

这是解决问题的绝对错误方法,还是我没有解决正确的事件?

问题:

如下面的评论所述:警告被触发,但过滤器未过滤(输入值已填充。)

1 个答案:

答案 0 :(得分:0)

没有找到我应该触发的事件,但是将原始输入附加到固定头部并且它似乎正在工作。所以我的解决方案是一个巨大的矫枉过正(至少我学到了大量的事件和事件处理程序)。

如果有人使用picnet tablefilter并希望制作一个固定的桌面头,那么使用我的jsfiddle中的css和html就足够了。

$( '#okno #filtertable thead .filters' ).appendTo( '#fixed_table thead' );