2016-08-24 42 views
1

我很难用chained selects触发我打算发生.a改变的ajax调用。问题是,当链接选择填充第二个选择(我打算用来调用ajax的那个)时,它会过早地触发ajax调用。我需要Ajax .on来触发第二个.on而不是第一个

是否可以跳过第一个.on,然后从第二个.change继续烧制?

链式选择功能:

$(function() {  
      $("#products").remoteChained({ 
       parents: "#instrument", 
       url: "/ajax/instrument", 
       loading: "loading", 

      });  
    }); 

我的Ajax功能:

$('#products').on('change', function(event) { 
    event.preventDefault(); 
    var href = $(this).find('option:selected').attr('value'); 
    console.log('href ' + href); 
    location.hash = href; 
    $('#sort').hide(); 
    $('#sort').css({ display: 'block' }).animate({ height: '100%' 
    }, function() { 

     $('#sort').fadeIn('slow').html('<div class="clearfix loading"> LOADING </div>'); 
     $('#loader').css({ border: 'none', position: 'relative', top: '24px', left: '48px', boxShadow: 'none' 
     }); 
    // http://loadinfo.net/ 
     $.ajax({ 
      url: "/ajax/ajax_sort/" + href, 
      dataType: "html", 
      success: function(data) { 
       $("#sort").html(data); 
      $('.c3 .card').equalHeights(); 
       $('.product-count').fadeOut('slow'); 
       $('#ajax-hidden').hide().fadeOut('slow'); 
      } 
     }); 
    }); 
+0

你能不能做一个有条件的ajax调用,因为你明确希望让用户更改值? 'if(href!=='your default')$ ajax ...' –

+1

从[github]下载(https://github.com/tuupola/jquery_chained/blob/master/jquery.chained.remote.js)和删除'.trigger('change')'事件。 – BenG

+0

如果有办法投票,我会的。这就像一个魅力。我不必删除.trigger,我只是将它们更改为.on,它的功能就像一个魅力。非常感谢! –

回答

2

最简单的方法是使用一个布尔变量来检查

var shouldRun = false; 
$('#products').on('change', function(event) { 
if(!shouldRun) 
{ 
    shouldRun = true; 
    return; 
} 
//Your code 
} 
+0

这工作,谢谢!唯一的问题是,当用户返回第一个选择,并更改另一个选项时,会发生同样的情况。也许我需要在第一次选择时参考.off –

+0

_唯一的问题是,这正是我看到这个答案时的想法。 – BenG

相关问题