我目前正在尝试使用 Flexbox Jquery 插件设置一组链式选择(这不是专门为链式设计的,但可以用于此)。
如果我明确设置所有内容,我的链接工作,但我试图让我的代码变干并使其更容易理解。因此,我想出了下面的代码。
当前所有框都最初加载,并进行查询。我遇到的问题是,当我遍历菜单(如下所示)时,我失去了 onSelect 功能 - 它只在我加载的最后一个菜单时触发。
我的理解是,由于我每次都使用不同的 JQuery 选择器$('#' + fbMenu.divId)
- 然后我为另一个菜单设置 onSelect 行为并不重要,但显然情况并非如此。每次我加载一个盒子时,我是否会以某种方式覆盖绑定?
希望我不必为每个下拉菜单指定 onSelect 功能,因为它们可能很多。
非常感谢您提供的任何帮助!
$(document).ready(function() {
// Create the variables for data objects
var vehicleMakeFb = new Object();
var vehicleModelFb = new Object();
var vehicleTrimFb = new Object();
// Set up each menu with the divId, jsonUrl and the chlid menus that will be updated on select
vehicleMakeFb.divId = 'vehicle_vehicleMake_input';
vehicleMakeFb.jsonUrl = '/vehicles/getmakes';
vehicleMakeFb.children = [vehicleModelFb];
vehicleModelFb.divId = 'vehicle_vehicleModel_input';
vehicleModelFb.jsonUrl = '/vehicles/getmodels';
vehicleModelFb.children = [vehicleTrimFb];
vehicleTrimFb.divId = 'vehicle_vehicleTrim_input';
vehicleTrimFb.jsonUrl = '/vehicles/gettrims';
vehicleTrimFb.children = [];
// Create an array of all menu objects so that they can be iterated through
var allMenus = [vehicleMakeFb,vehicleModelFb,vehicleTrimFb];
// Create the parent menu
for (var i = 0; i < allMenus.length; i++) {
var fbMenu = allMenus[i];
alert(fbMenu.divId);
$('#' + fbMenu.divId).flexbox(fbMenu.jsonUrl + '.json', {
// Update the child menu(s), based on the selection of the first menu
onSelect: function() {
for (var i = 0; i < fbMenu.children.length; i++) {
var fbChild = fbMenu.children[i];
var hiddendiv = document.getElementById(fbMenu.divId + '_hidden');
var jsonurl1 = fbChild.jsonUrl + '/' + hiddendiv.getAttribute('value') + '.json';
alert(jsonurl1);
$('#' + fbChild.divId).flexbox(jsonurl1);
}
}
});
}
});