jQuery - полезни съвети (част 2)

Това е втора част на статията "jQuery - полезни съвети". Ако случайно сте пропуснали първата, може да я  намерите тук. Сега следват още пет нови съвета, които се надявам да ви бъдат полезни. Наслаждавайте се!

6. Проблем с "fadeIn" и "fadeOut" ефекти в Internet Explorer

Ако сте използвали "fadeIn" или "fadeOut" ефект в IE, най-вероятно сте забелязали колко грозно изглежда. Текстът не се изобразява както трябва. За да разрешите този проблем, трябва да премахнете атрибута филтър, а това ства по следния начин.

// Това е елементът, на който прилагаме "fadeIn" ефект
$("#myelement").fadeIn();

// Това е начинът за премахване на атрибута "filter" от елемента "#myelement"
$("#myelement").removeAttr("filter");

7. Отваряне на външни линкове в нов прозорец

Разбира се, има много решения на този проблем, но ето на вашето внимание едно от тях:

$("a:not([href*='your_domain_name.com'])").click(function(){
		window.open(this.href);
		return false;
	});

8. Как да проверим дали jQuery библиотеката е заредена

Тази проверка е много полезна, когато искаме да използваме скрипт само при условие, че jQuery библиотеката е заредена.

/* Начин 1 */
if (jQuery) {
 //jQuery е заредена
} else {
 //jQuery не е заредена
}

/* Начин 2 */
if (typeof jQuery == 'undefined') {
 //jQuery не е заредена
} else {
 //jQuery е заредена
}

9. Използвайте класове, както маркери

Можете да използвате маркер, за да следите дали дадено събитие се е случило или не. С методът addClass можете лесно да добавяте "class" към елемент. Можете да проверите по-късно наличието на този клас (по този начин вие маркирате елемента), с hasClass функция. Ще ви дам прост пример:

$('a').click( function() {
	//Добавяме клас на елемента
	$(this).addClass('active');
});

/* Правим проверка за клас с име 'active' */
if ( $('a').hasClass('active')
{
	//Вашият код
}

10. Оптимизирайте селекторите си по модела Sizzle

Може би това ще е интересен факт за вас. От версия 1.3, jQuery използва Sizzle Javascript Selector Library, която работи малко по-различно от използвания досега selector engine. Към този момент всичко се случваше отляво надясно, което означава, че при избора на един низ като $("div.class a.class2 span.class3") започва търсене от (div.class) след намирането му в него търсим (a.class2), след което в него търсим (span.class3). Сами разбирате, че при един по-голям низ от селектори ще отнеме известно време selector engine-а да обработи тази информация. С използването на Sizzle метода нещата стоят по друг начин. Ако имаме низ, като $("div.class a.class2 span.class3"), прочитайки го отдясно наляво Sizzle selector engine-а ще намери елемента (span.class3) след което ще провери дали има други елементи (span.class3) и ако няма ще ни върне като резултат точно елемента от който се нуждаем.

Уверете се, че най-десният селектор е много специфично подбран. Например:

//Грешно
$('div.class a.class2 .class3')

//Грешно
$('div.class .class2 .class3')

//Правилно
$('div.class а.class2 span.class3')

Разбира се най-доброто решение е когато използвате id, за да обвържете даден елемент, като например:
HTML

<ul id="items">
	<li class="item">item 1</li>
	<li class="item">item 2</li>
	<li class="item">item 3</li>
</ul>

JavaScript

//Грешно
$('#items .item');

//Правилно
$('ul#items li.item');

С това "jQuery - полезни съвети (част 2)" приключва. Надявам се да сте намерили нещо полезно, което е било ново за вас. И запомнете мотото на jQuery, което гласи "Write Less, Do More"!

  • Facebook
  • Twitter
Тагове: ,

Отговор