Comments 34
Скоренько они — и это хорошо :)
Скорее всего просто шибко торопились к юбилею выпустить 1.4, а теперь баги латают.
mouseenter… mouseleave… Мде…
.live() .die() — из той же оперы, жесть
Что не так?
Какое тут отличие от ховера? Это же просто захламление. Или я чего-то не понимаю и ошибаюсь?
mouseenter/mouseleave поддерживаются нативно в IE, и очень хочется, чтобы они появились в других браузерах. А hover — это просто синтаксический сахар для mouseenter + mouseleave.
mouseleave = mouseout
mouseenter != mouseover
mouseenter != mouseover
mouseenter != mouseover
Вот это не совсем понял. В чем их разница?
Вот это не совсем понял. В чем их разница?
mousenter срабатывает единожды, при ВХОДЕ курсора в область объекта
mouseover срабатывает каждый раз при ДВИЖЕНИИ курсора в области объекта
вроде так
mouseover срабатывает каждый раз при ДВИЖЕНИИ курсора в области объекта
вроде так
mouseleave != mouseout
$.getJSON заработал адекватно?
а что с ним было?
с друпала данные не мог взять
И откуда у Вас уверенность, что проблема в $.getJSON(), а не в выдаче друпала, кривых руках или еще каких-то факторах?
У меня с этим методом не было сложностей.
У меня с этим методом не было сложностей.
Strict JSON parsing, using native JSON.parse (jQuery.ajax() Documentation, Commit 1, Commit 2, Commit 3)
jQuery 1.3 and earlier used Javascript’s eval to evaluate incoming JSON. jQuery 1.4 uses the native JSON parser if available. It also validates incoming JSON for validity, so malformed JSON (for instance {foo: «bar»}) will be rejected by jQuery in jQuery.getJSON and when specifying “json” as the dataType of an Ajax request.
Отсюда jquery14.com/day-01
Может в этом проблема?
jQuery 1.3 and earlier used Javascript’s eval to evaluate incoming JSON. jQuery 1.4 uses the native JSON parser if available. It also validates incoming JSON for validity, so malformed JSON (for instance {foo: «bar»}) will be rejected by jQuery in jQuery.getJSON and when specifying “json” as the dataType of an Ajax request.
Отсюда jquery14.com/day-01
Может в этом проблема?
Попробуйте просто сделать $.ajax, в качестве contentType указать text\plain и потом ответу с светвера в ручную сделать Eval:
var o = eval('(' + response + ')');
var o = eval('(' + response + ')');
странно что он для лайва не сделали что — то вроде того
$('#some_element').live().width(20);
почему только события можно навешивать?
$('#some_element').live().width(20);
почему только события можно навешивать?
Я согласен, что в контексте вызова цепочки jQuery методов .live() не возвращает $(this).
НО.
Обратите внимание на свой пример: $('#some_element').live().width(20);
По хорошему .live() назначают некоторому css-классу а не уникальному #ID. Иначе, произойдет логический парадокс двух одинаковых уникальных #ID.
$('.some_element_class').live();
Таким образом .width(20) не будет отработан при внедрении новых элементов в DOM. Из чего следует, что .width() нужно вызывать в момент DOM-модификации:
$('#someone').load('new-elements.php', function(){
$(this).find('.some_element_class').width(20);
});
НО.
Обратите внимание на свой пример: $('#some_element').live().width(20);
По хорошему .live() назначают некоторому css-классу а не уникальному #ID. Иначе, произойдет логический парадокс двух одинаковых уникальных #ID.
$('.some_element_class').live();
Таким образом .width(20) не будет отработан при внедрении новых элементов в DOM. Из чего следует, что .width() нужно вызывать в момент DOM-модификации:
$('#someone').load('new-elements.php', function(){
$(this).find('.some_element_class').width(20);
});
Я не против вашего примера, я согласен что так должно работать. Я только попытался объяснить свою точку зрения, как один из возможных вариантов.
Хотя могли и забыть просто сделать return $(this).
Хотя могли и забыть просто сделать return $(this).
Есть шикарный плагин docs.jquery.com/Plugins/livequery
С ним можно писать:
$('#selector.to').livequery(function()
{
$(this).click(function(){alert(this);});
});
С ним можно писать:
$('#selector.to').livequery(function()
{
$(this).click(function(){alert(this);});
});
Дело в том, что live работает следующим образом: «навешивает» eventlistener на document, соответствующий вашему событию и передает в него селектор, который вы указали в $(«selector»).live(...). А eventlistener уже вызывает вашу функцию, когда событие проходит вверх от child'ов до document.
Вот live()(и die()) по-моему самая глупая глупость жквери. Можно же было навешивание событий на динамически создаваемые ноды внедрить в bind()(unbind()) и не париться с отслеживанием своего хтмла.
Скажите, а у одного меня проблемы с совместимостью jQuery 1.4 и jQuery UI?
Кстати, если на сайте api.jquery.com набрать некую последовательность, то вас перебросит на ejohn.org/apps/hero/ :)
Второй день уже жду… :)
Microsoft уже добавили себе ajax.microsoft.com/ajax/jQuery/jquery-1.4.1.min.js
Microsoft уже добавили себе ajax.microsoft.com/ajax/jQuery/jquery-1.4.1.min.js
В Хроме евент .click срабатывает два раза, при одном клике. Аналогично в сафари.
Sign up to leave a comment.
Вышел jQuery 1.4.1