JQuery 移动设备:select 菜单刷新 true 在 iOS 上不起作用
JQuery Mobile: select menu refresh true does not work on iOS
我正在使用这段美妙的代码:
function rebuildFilterDialogConditions(filterPopup, jsonArray) {
for (var i = 0; i < jsonArray.filters.length; i++) {
var filterSelect = $('select#' + jsonArray.filters[i].filterCode);
var filterOptionsSelect = $('select#' + jsonArray.filters[i].filterCode + ' option');
filterOptionsSelect.remove();
filterSelect.append('<option value="default" selected="selected" disabled="disabled">' + jsonArray.filters[i].filterName + '</option>');
for (var j = 0; j < jsonArray.filters[i].filterValues.length; j++) {
filterSelect.append('<option value="' + jsonArray.filters[i].filterValues[j] + '">' + jsonArray.filters[i].filterValues[j] + '</option>');
}
filterSelect.selectmenu('refresh', true);
}
}
从技术上讲,它会删除 select
中的每个 option
,用新数据替换它,然后调用 selectmenu('refresh', true)
强制它重建。
这适用于 Android。
这不适用于 iOS。不起作用意味着它不会刷新底部的 "native-looking" 菜单,它与以前完全相同。
当然是相同的代码。
我该怎么办?
错误完全出在其他地方,这甚至 运行 iOS 上的实际调试所指示的那样。
方法:
filterSelect.change(function() {
...
bridge.callHandler("updateResultSearchFilters", result);
});
没有对 bridge
的引用,因此实际上从未调用过该方法...
我正在使用这段美妙的代码:
function rebuildFilterDialogConditions(filterPopup, jsonArray) {
for (var i = 0; i < jsonArray.filters.length; i++) {
var filterSelect = $('select#' + jsonArray.filters[i].filterCode);
var filterOptionsSelect = $('select#' + jsonArray.filters[i].filterCode + ' option');
filterOptionsSelect.remove();
filterSelect.append('<option value="default" selected="selected" disabled="disabled">' + jsonArray.filters[i].filterName + '</option>');
for (var j = 0; j < jsonArray.filters[i].filterValues.length; j++) {
filterSelect.append('<option value="' + jsonArray.filters[i].filterValues[j] + '">' + jsonArray.filters[i].filterValues[j] + '</option>');
}
filterSelect.selectmenu('refresh', true);
}
}
从技术上讲,它会删除 select
中的每个 option
,用新数据替换它,然后调用 selectmenu('refresh', true)
强制它重建。
这适用于 Android。
这不适用于 iOS。不起作用意味着它不会刷新底部的 "native-looking" 菜单,它与以前完全相同。
当然是相同的代码。
我该怎么办?
错误完全出在其他地方,这甚至 运行 iOS 上的实际调试所指示的那样。
方法:
filterSelect.change(function() {
...
bridge.callHandler("updateResultSearchFilters", result);
});
没有对 bridge
的引用,因此实际上从未调用过该方法...