Другие ответы сделали хорошее задание объяснения базовых функций Мерзавца (которые являются большими). Но существуют также так многие мало способы, которыми Мерзавец ведет себя лучше и помогает сохранить мою жизнь более нормальной. Вот некоторые небольшие вещи:
Официальный способ jquery инициировать / принудительно инициировать событие -
$("selector").trigger("blur");
$("selector").trigger("focus");
Но я не уверен, что это то, что вам поможет.
Вы смешиваете вызовы jQuery и DOM, вам действительно следует избегать этого.
Создайте специальные обработчики для кнопок «Вниз» и «Вверх» (используя либо теги ID, либо теги классов), а затем измените значение вашего калькулятора, вызвав jQuery $ ("# Calculator"). val (decPlaces + 1);
После просмотра некоторых полезных комментариев я внес следующие изменения:
jQuery(function($) {
$("button").bind("click", function(e){
var decPlaces = $('#dpv').val() * 1;
var hi1 = $('#origin').val();
if (this.id == 'up' && decPlaces < 5){
$('#dpv').val(decPlaces + 1);
if (hi1 != ''){
$('#' + hi1).trigger("blur");
}
}
if (this.id == 'down' && decPlaces > 0){
$("#dpv").val(decPlaces - 1);
if (hi1 != ''){
$('#' + hi1).trigger("blur");
}
}
});
$('input.auto').focus(function(){
if (this.id != 'dpv'){
$(this).parent().addClass("curFocus")
}
});
$('.clearAll').focus(function(){
$('.clearAll').val("");
});
$('input.auto').blur(function(){
$(this).parent().removeClass("curFocus")
var sqft = 10.76391041670972192890; //square feet per square meter
var lbs = 2.20462262184877566540; //pounds per kilo
var bwiv = '';
var sfiv = '';
var bwmv = '';
var smmv = '';
$('#origin').val(this.id);
if((this.id == 'bwi' || this.id == 'sfi') && this.value != ''){ // imperial
if(this.id == 'bwi'){
bwiv = $.fn.autoNumeric.Strip(this.id);
sfiv = (3000 / bwiv);
$('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv));
}
if(this.id == 'sfi'){
sfiv = $.fn.autoNumeric.Strip(this.id);
bwiv = (3000 / sfiv);
$('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv));
}
bwmv = (((bwiv / lbs) / (3000 / sqft)) * 1000);
smmv = (1000 / bwmv);
$('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv));
$('#smm').val($.fn.autoNumeric.Format('smm', smmv));
}
if((this.id == 'bwm' || this.id == 'smm') && this.value != ''){ //metric
if(this.id == 'bwm'){
bwmv = $.fn.autoNumeric.Strip(this.id);
smmv = (1000 / bwmv);
$('#smm').val($.fn.autoNumeric.Format('smm', smmv));
}
if(this.id == 'smm'){
smmv = $.fn.autoNumeric.Strip(this.id);
bwmv = (1000 / smmv);
$('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv));
}
bwiv = ((((bwmv / 1000) * lbs) / sqft) * 3000);
sfiv = (3000 / bwiv);
$('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv));
$('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv));
}
});
});
Кнопки «вверх-вниз», которые увеличивают или уменьшают значение десятичной дроби, по-прежнему не очень отзывчивы в IE.
К вашему сведению - функция autoNumeric предназначена для созданного мной плагина, который выполняет числовое форматирование на лету.
Еще раз спасибо.
Боб
Не уверен, что я вас понял, но вы можете применить функцию к определенной локальной (этой) области:
var x = 5;
var f = new Function('alert(this.x)');
function A(x){
this.x = x;
f.apply(this,[]);
}
a = new A(10);
Это предупреждение 10 как f применяется с A.this
-121--3995716-Попробуйте это
$('li.primaryMenuItem:last li a:last').blur([do whatever you need to do])
Логически, если пользователь выключается, он должен был фокусировать последний якорь.
Можно даже настроить собственный обработчик событий так:
$('li.primaryMenuItem:last').bind('myblur', function() ...);
и вызвать его в пределах последнего события размытия якоря:
...blur(function() {
$(this).parents('li.primaryMenuItem').trigger('myblur'); ...
-121--4293832- Я ненавижу нечитаемый код, поэтому я просто отформатировал его для вас:)
jQuery(function($) { $("button").bind("click", function(e){
var decPlaces = $('#dpv').val() * 1;
var hi1 = $('#origin').val();
if (this.id == 'up' && decPlaces < 5){
$('#dpv').val(decPlaces + 1);
if (hi1 != ''){
$('#' + hi1).trigger("blur");
}
}
if (this.id == 'down' && decPlaces > 0){
$("#dpv").val(decPlaces - 1);
if (hi1 != ''){
$('#' + hi1).trigger("blur");
}
}
});
$('input.auto').focus(function(){
if (this.id != 'dpv'){
$(this).parent().addClass("curFocus")
}
});
$('.clearAll').focus(function(){ $('.clearAll').val(""); });
$('input.auto').blur(function(){
$(this).parent().removeClass("curFocus")
var sqft = 10.76391041670972192890; //square feet per square meter
var lbs = 2.20462262184877566540; //pounds per kilo
var bwiv = '';
var sfiv = '';
var bwmv = '';
var smmv = '';
$('#origin').val(this.id);
if((this.id == 'bwi' || this.id == 'sfi') && this.value != ''){
// imperial
if(this.id == 'bwi'){
bwiv = $.fn.autoNumeric.Strip(this.id);
sfiv = (3000 / bwiv);
$('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv));
}
if(this.id == 'sfi'){
sfiv = $.fn.autoNumeric.Strip(this.id);
bwiv = (3000 / sfiv);
$('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv));
}
bwmv = (((bwiv / lbs) / (3000 / sqft)) * 1000);
smmv = (1000 / bwmv);
$('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv));
$('#smm').val($.fn.autoNumeric.Format('smm', smmv));
}
if((this.id == 'bwm' || this.id == 'smm') && this.value != ''){ //metric
if(this.id == 'bwm'){
bwmv = $.fn.autoNumeric.Strip(this.id);
smmv = (1000 / bwmv);
$('#smm').val($.fn.autoNumeric.Format('smm', smmv));
}
if(this.id == 'smm'){
smmv = $.fn.autoNumeric.Strip(this.id);
bwmv = (1000 / smmv);
$('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv));
}
bwiv = ((((bwmv / 1000) * lbs) / sqft) * 3000);
sfiv = (3000 / bwiv);
$('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv));
$('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv));
}
});
});