2014-09-30 177 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