Быстрый и легкий:
function preload(arrayOfImages) {
$(arrayOfImages).each(function(){
$('<img/>')[0].src = this;
// Alternatively you could use:
// (new Image()).src = this;
});
}
// Usage:
preload([
'img/imageName.jpg',
'img/anotherOne.jpg',
'img/blahblahblah.jpg'
]);
Или, если Вы хотите плагин jQuery:
$.fn.preload = function() {
this.each(function(){
$('<img/>')[0].src = this;
});
}
// Usage:
$(['img1.jpg','img2.jpg','img3.jpg']).preload();
Событие onchange
обычно не запускается, пока элемент не потеряет фокус. Вы также захотите использовать onkeypress
. Может быть, что-то вроде:
var changeHandler = function() {
$(".prashQs").addClass("hide");
var cat = $("#selCategory :selected").attr("id");
cat = cat.substr(1);
$("#d" + cat).removeClass("hide");
}
$("#selCategory").change(changeHandler).keypress(changeHandler);
Вам нужно, чтобы оба onchange
и onkeypress
учитывали взаимодействие с мышью и клавиатурой соответственно.
Иногда поведение изменения может отличаться в зависимости от браузера, в качестве обходного пути вы можете сделать что-то вроде этого:
//Toggle visibility of selected item
$("#selCategory").change(function() {
$(".prashQs").addClass("hide");
var cat = $("#selCategory :selected").attr("id");
cat = cat.substr(1);
$("#d" + cat).removeClass("hide");
}).keypress(function() { $(this).change(); });
Вы можете связать любые события, которые хотите, и вручную запустить событие изменения.
IE:
var changeMethod = function() { $(this).change(); };
....keypress(changeMethod).click(changeMethod).xxx(changeMethod);
Описываемое вами поведение, запуск события изменения при прокрутке с клавиатуры в элементе выбора, на самом деле является ошибкой Internet Explorer. В спецификации DOM Level 2 Event событие change
определяется следующим образом:
Событие изменения происходит, когда элемент управления теряет фокус ввода и его значение был изменен с момента получения фокуса. Это событие действительно для INPUT, SELECT, и ТЕКСТАРА. element.
Если вам действительно нужно такое поведение, я думаю, вам следует посмотреть на события клавиатуры.
$("#selCategory").keypress(function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 38 || keyCode == 40) { // if up or down key is pressed
$(this).change(); // trigger the change event
}
});
Посмотрите пример здесь ...
У меня была такая проблема в IE под JQuery 1.4.1 - события изменения в комбобоксах не срабатывали, если для изменения использовалась клавиатура.
Кажется, это было исправлено в JQuery 1.4.2.