trigger()不接受参数

时间:2013-11-06 17:42:23

标签: javascript jquery variables parameters triggers

编辑4

嗯,我做到了,但它并不理想。我现在看看按钮有哪个类并运行代码。如果有人能弄清楚如何让它正常工作(或至少解释为什么它不会)我仍然会欣赏它,但我现在就让它这样做。:

$(function () {
    var post = $('ul#filtrifyContainer').find('li'),
    ft = $.filtrify("filtrifyContainer", "placeHolder"),        
    data = $(post).data(),
    genre = $(post).data("genre"),
    number = $(post).data("number");            

    var Filter = function(category){
        $(post).each(function () {
        var attribute = $(this).data(category);             
        $(this).append('<a class="button small ' + category + '">' + attribute.split(',').join('</a><a class="button small ' + category + '">') + '</a>');              

           $('a.button').click(function (e) {
               e.stopImmediatePropagation(); 
               var buttonText = $.trim($(this).text());             
               console.log(category);
               console.log(buttonText);                 
               ft.trigger({category: [buttonText]});
           });  
        });         
    };

    if($(this).hasClass('genre')){
        ft.trigger({genre: [buttonText]});
    }   
    if($(this).hasClass('number')){
        ft.trigger({number: [buttonText]});
    }           
}); 

这是工作小提琴:http://jsfiddle.net/fletchling/JLN6J/13/

编辑3

我正在使用Luis Almeda's Filtrify插件。我正在打印一个帖子中的数据属性列表,分离项目并将它们转换为触发过滤器的按钮。这样,用户可以使用下拉菜单进行过滤,也可以在浏览项目时单击按钮。无法滚动到页面顶部进行过滤。我最终使用此代码执行此操作:

$(function () {
    var post = $('ul#filtrifyContainer').find('li'),
    ft = $.filtrify("filtrifyContainer", "placeHolder"),        
    data = $(post).data(),
    genre = $(post).data("genre"),
    number = $(post).data("number");            

    var Filter = function(category){
        $(post).each(function () {
        var attribute = $(this).data(category);             
        $(this).append('<a class="button small ' + category + '">' + attribute.split(',').join('</a><a class="button small ' + category + '">') + '</a>');              

           $('a.button').click(function (e) {
               e.stopImmediatePropagation(); 
               var buttonText = $.trim($(this).text());             
               console.log(category);
               console.log(buttonText);                 
               ft.trigger({category: [buttonText]});
           });  
        });         
    };

    if(genre)Filter('genre')
    if(number)Filter('number')      
}); 

我的问题是此行中的“类别”不接受参数,因此不会过滤:     ft.trigger({category:[buttonText]});

代码确实以其他方式工作。如果我将“category”替换为“genre”或“number”这个词,它会按照它应该进行过滤。它还在console.log()中记录了正确的单词。当我调试它时,它显示“类别”被替换为“数字”或“流派”。它显然接受变量,因为它读取“buttonText”就好了。我得不到什么?为什么不注册该特定参数?我该如何解决这个问题?

您可以在此处查看我的问题:http://jsfiddle.net/fletchling/JLN6J/10/

你可以看到我从下面开始的地方以及我是如何进行的:

$(function () {
    var post = $('ul#filtrifyContainer').find('li'),
    ft = $.filtrify("filtrifyContainer", "placeHolder"),        
    data = $(post).data(),
    genre = $(post).data("genre"),
    number = $(post).data("number");            

    var Filter = function(category){
        $(post).each(function () {
        var attribute = $(this).data(category);             
        $(this).append('<a class="button small ' + category + '">' + attribute.split(',').join('</a><a class="button small ' + category + '">') + '</a>');              

            $('a.button').click(function () {
                var buttonText = $(this).text();                            
                ft.trigger({category: [buttonText]});
                console.log(category);                  
            });     
        });         
    };

if(genre)Filter('genre')
if(number)Filter('number')      

});

我的问题是,当我在console.log中它是什么类别时它会写出“流派”和“数字”。但是,在此之前它只记录第一个。为什么现在这样做?我相信这是阻止它工作的唯一因素,也是我的最后一个问题。

一直滚动到javascript面板的底部,查看我的代码。

与往常一样,非常感谢任何帮助。

修改

我修复了重复属性,点击时点击:

$('a.button').click(function (e) {
    e.stopImmediatePropagation();
    var buttonText = $(this).text();                            
    ft.trigger({category: [buttonText]});
    console.log(category);                  
}); 

当我调试代码时,看起来它已成功进入此行的类别:

ft.trigger({category: [buttonText]});

编辑2: 修正了几个愚蠢的错误。在e.stopImmediatePropogation之前创建了var buttonText并添加了trim函数:

$('a.button').click(function (e) {
    e.stopImmediatePropagation(); 
    var buttonText = $.trim($(this).text());                
    console.log(category);
    console.log(buttonText);                
    ft.trigger({category: [buttonText]});
});

0 个答案:

没有答案