2014-09-30 178 views
2

我目前使用同位素插件来创建一个功能,允许我放置多个选择下拉菜单。当用户选择下拉菜单并单击提交时,它会触发事件并重新排列项目。不点击更改事件触发

我收到的问题是,更改事件触发并删除所有内容,但是当我单击提交时,返回正确的结果。

的Jquery:

jQuery(document).ready(function($) { 

    var $container = $('.finalblock'), 
     filters = {}, 
     selector; 

    $container.isotope({ 
    itemSelector : '.finalchannel', 
    layoutMode: 'none' 
    }); 


    $('select').change(function(){ 
    var $this = $(this); 
     $('#mainSubmission').click(function() { 
     var group = $this.attr('data-filter-group'); 
     filters[ group ] = $this.find(':selected').attr('data-filter-value'); 
     var isoFilters = []; 
     for (var prop in filters) { 
      isoFilters.push(filters[ prop ]) 
     } 
     var selector = isoFilters.join(''); 

     $container.isotope({ filter: selector }); 
     return false; 
     }); 
    }); 
}); 

㈣一直在寻找进入bind()功能,但是,这并不似乎是给了我正确的事情(也许因为我必须做一些错误的

$('select').bind('initCheckboxes change', function() { 
    // do some stuff including ajax work 
}).trigger('initCheckboxes'); 

编辑: JSFIDDLE:http://jsfiddle.net/Lnzkv3v7/

+1

什么是initCheckboxes?绑定和触发器应采取一个平均名称(如click,mouseenter等)。如果你需要,你现在可以嵌入javascript代码片段,或者只是提供一个jsfiddle。它使愿意调试/帮助你的人更容易。 – 2014-09-30 20:04:07

+0

differencias:使用'unbind'禁用'bind'事件。 ''on' multiple event'.on('click,load,...'another,one function'.click(...' – AvrilAlejandro 2014-09-30 20:22:25

+0

我还找不到任何区别,但我想知道,你需要提交按钮?您可以将其删除并将代码从单击事件移至选择更改事件,然后在用户从下拉列表中进行选择时可以正常工作:http://jsfiddle.net/4cjqb9yc/ – 2014-09-30 20:39:51

回答

1

只看你的代码,(在网站本身,不是jsfiddle):

的第一选择元件具有filters

<select id="filters" data-filter-group="mainfilter"> 

的ID,但你可知道,是存储在您的JS变量?

var $container = $('.finalblock'), 
    filters = {}, 
    selector; 

由于大多数这些元素都被同位素引入,所以这可能是问题所在。这是一个理论的原因是因为你的第二个选择元素似乎不会造成问题。因此,将第一个选择ID更改为其他内容并查看它是否有效。

+0

谢谢 - 只是将其更改为filters1,并且完美地工作,再次谢谢您! – 2014-09-30 20:46:18