Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$(this).parents("tr"), хотя лучше, наверное, $(this).parents("tr:first"), потому что могут быть вложенные таблицы. Вариант с .closest() выглядит так же, как и проговаривается.$(".info").html("").html("<b>Ok</b>")
for (i = 0; i < 100; ++i) {
if ($("input").prop("checked")) {}
if ($("input").is(":checked")) {}
}
$("input") вынести за цикл… Пошел проверил… В общем, у меня на 10000 итераций второй вариант медленне на 10 милисекунд, на 1000 — 1 милисекунда. Думаю, можно смело выбирать любой вариант :)$('.nav').removeClass('first').removeClass('second').removeClass('third');
$('.nav').removeClass('first second third');
.ajaxSetup, не затираются одноименными настройками индивидуального AJAX-запроса. Но их можно изменить вызовом еще одного .ajaxSetup.$.ajaxSetup({data: { new_prop: new_val }}) не сотрет предыдущие параметры data, а только обновит (или создаст) указанные. Во всяком случае, в последней версии jQuery.$(".info").html("")
может порождать утечки памяти. В jQuery.cache хранятся ссылки на DOM узлы (например на те, на которые были навешаны обработчики). Когда вы затираете узлы innerHTML-ем или html(''), удаленные узлы из кеша не убираются, в отличии от empty()..empty() предпочтительнее как раз тем, что занимается smart-очисткой элемента..html("") — не будет утечек! Потому как jQuery вызовет .empty() перед вставкой нового значения (в данном случае у вас пустая строка).<div class="important-info-block"></div>
<div class="left inline-block black-border medium-border-radius"></div>
$("#history, #description, #category, #contact").hide()
.hover() выглядит для него как событие, а в обработчике подсовывается тип mouseenter или mouseleave, и что нельзя вызвать событие вручную. Но в документации ясно написано, что .hover() является сокращением для последовательного навешивания указанных обработчиков. Поправьте меня, если я не прав — самому интересно, потому как у тикета стоит статус — closed enhancement: fixed, при этом человек сослался на документацию, в которой, мол, не рекомендуется использование ховера, но на данный момент там об этом ничего не сказано.var fn = function(){}
...
//где то в другом месте fn = undefined;
...
$('.spend_the_money').click(fn);
element.on('click', handler)
element.click(handler)
$('<option />').prop('value', response[k].value).text(response[k].title).appendTo(parentElement);
// Перед итерацией
var optCreateSel = document.createElement('option'); // Создаем "selector" для jQuery
// Непосредственно в самой итерации
$(optCreateSel).prop('value', response[k].value).text(response[k].title).appendTo(parentElement);
// Перед итерацией
var optCreateSel = $("<option />"); // Создаем "selector" для jQuery
// Непосредственно в самой итерации
optCreateSel.prop('value', response[k].value).text(response[k].title).appendTo(parentElement);
// Перед итерацией
var optCreateSel = $(document.createElement('option')); // Создаем "selector" для jQuery
// Непосредственно в самой итерации
optCreateSel.prop('value', response[k].value).text(response[k].title).appendTo(parentElement);
if (someValue)
$j(selector).show;
else
$j(selector).hide();
$j(selector).toggle(someValue);
$(".info").html("") знают все, а за empty — часть людей полезет в доки. «Особые случаи не настолько особые, чтобы нарушать правила.» (с) zen.py$("#history, #description, #category, #contact").hide() — удобнее отлаживать код (комментировать отдельные hide) когда они идут списком.$.ajaxSetup — вообще непонятно какая либа его переопределит, чтобы на него полагаться. Проще написать обычную js функцию делающую запрос с нужными дефолтными параметрами.var person = $(".name").closest(".person ")Способ хороший, но на мой взгляд, когда возникает необходимость искать предка таким способом это говорит о том что что-то не так в королевстве.person взывает к своему предку person:<div class="person">
<div class="name">Name</div>
</div>var methods = {
_getName: function() {
$(this).find('.name');
// Do smth.
}
}
$.fn.my_plugin = function() {
// Init, etc.
}
$('.person').my_plugin();$('.element', '.container')
$('.container').find('.element')
.html никак не может быть быстрее, так как внутри него вызывается .empty. Опять же: тест1, тест2, тест3..bind() на .on()? Еще хочу контекст window заменить на что-то типа $("#seach-form"). var App = { /* magic */ };
App.on('start', function() { alert('start') })
.on('stop', function() { alert('stop') })
.on('run', function() { alert('run') });
// По хорошему, все что ниже входит в обязанности App
$(function() {
App.start();
$('#actionButton').on('click', $.proxy(App, 'run'));
});
$(window).on('beforeunload', $.proxy(App, 'stop'));
$(Math).click(function() { alert(this.PI) });
// ...
$(Math).click();
App = {onStart: $.Callbacks};
App.onStart.add(function() { alert('start') });
Про jQuery и велосипеды — мое дополнение