Следующий фрагмент кода отлично работает с использованием jQuery1.2.3, но не работает с последней версией jQuery:
$.getJSON(url,{str: $$.val() }, function(j){
if (j.length > 0) {
var options = '<option value="">' +params.firstOption+ '</option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
}
$dest.removeAttr('disabled')
.html(options)
.find('option:first')
.attr('selected', 'selected');
});
Обратите внимание, что этот код на самом деле является частью плагина jQuery для каскадного выпадающего списка. Это дает желаемый результат, если я использую jQuery1.2.3. Полный код плагина выглядит следующим образом:
(function($){
$.fn.linkedSelect = function(url,destination,params) {
var params = $.extend({
firstOption : 'Please Select',
loadingText : 'Loading...'
},params);
var $dest = $(destination);
return this.each(function(){
$(this).bind('change', function() {
var $$ = $(this);
$dest.attr('disabled','false')
.append('<option value="">' +params.loadingText+ '</option>')
.ajaxStart(function(){
$$.show();
});
$.getJSON(url,{str: $$.val() }, function(j){
alert('User clicked on this.');
if (j.length > 0) {
var options = '<option value="">' +params.firstOption+ '</option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
}
$dest.removeAttr('disabled')
.html(options)
.find('option:first')
.attr('selected', 'selected');
}); // end getJSON
}); // end change
}); // end return each
}; // end function
})(jQuery);
Обратите внимание, что не может генерировать следующее предупреждающее сообщение
alert('User clicked on this.');
что написано внутри функции getJSON для отладки, если я использую последнюю версию jQuery. И я также проследил с помощью отладчика JS, он не может войти в функцию getJSON, если я использую последнюю версию jQuery. Но, это показывает это предупреждающее сообщение, если я использую jQuery1.2.3.
В консоли ошибок отображаются предупреждающие сообщения:
Warning: reference to undefined property b.p.height
Source File: http://localhost//js/jquery.jqGrid.min.js Line: 99
Warning: reference to undefined property b.p.serializeGridData
Source File: http://localhost/js/jquery.jqGrid.min.js Line: 62
Warning: reference to undefined property jQuery.event.triggered
Source File: http://localhost/js/jquery1.7.js Line: 2924
Warning: reference to undefined property elem[jQuery.expando]
Source File: http://localhost/js/jquery1.7.js Line: 1719
Что я должен изменить, чтобы адаптироваться к последней версии jQuery. Спасибо.