我需要Ajax .on来触发第二个.on而不是第一个
问题描述:
我很难用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');
}
});
});
答
最简单的方法是使用一个布尔变量来检查
var shouldRun = false;
$('#products').on('change', function(event) {
if(!shouldRun)
{
shouldRun = true;
return;
}
//Your code
}
+0
这工作,谢谢!唯一的问题是,当用户返回第一个选择,并更改另一个选项时,会发生同样的情况。也许我需要在第一次选择时参考.off –
+0
_唯一的问题是,这正是我看到这个答案时的想法。 – BenG
你能不能做一个有条件的ajax调用,因为你明确希望让用户更改值? 'if(href!=='your default')$ ajax ...' –
从[github]下载(https://github.com/tuupola/jquery_chained/blob/master/jquery.chained.remote.js)和删除'.trigger('change')'事件。 – BenG
如果有办法投票,我会的。这就像一个魅力。我不必删除.trigger,我只是将它们更改为.on,它的功能就像一个魅力。非常感谢! –