Иногда, лучше за неделю после релиза, залатать не фатальные баги и выпустить апдейт чем, ждать еще пол-года пока их внутренний qa найдет (как показывает практика всех багов ему всё равно не найти)…
mouseenter/mouseleave поддерживаются нативно в IE, и очень хочется, чтобы они появились в других браузерах. А hover — это просто синтаксический сахар для mouseenter + mouseleave.
Не так. Если пройти по ссылке в моём комментарии выше, то можно найти правильный ответ.
Mouseover and mouseout also fire when the user mouses over or out of a child element of the element you registered the events on. Mouseenter and mouseleave don’t.
И откуда у Вас уверенность, что проблема в $.getJSON(), а не в выдаче друпала, кривых руках или еще каких-то факторах?
У меня с этим методом не было сложностей.
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.
Попробуйте просто сделать $.ajax, в качестве contentType указать text\plain и потом ответу с светвера в ручную сделать Eval:
var o = eval('(' + response + ')');
Я согласен, что в контексте вызова цепочки jQuery методов .live() не возвращает $(this).
НО.
Обратите внимание на свой пример: $('#some_element').live().width(20);
По хорошему .live() назначают некоторому css-классу а не уникальному #ID. Иначе, произойдет логический парадокс двух одинаковых уникальных #ID.
$('.some_element_class').live();
Таким образом .width(20) не будет отработан при внедрении новых элементов в DOM. Из чего следует, что .width() нужно вызывать в момент DOM-модификации:
Есть шикарный плагин docs.jquery.com/Plugins/livequery
С ним можно писать:
$('#selector.to').livequery(function()
{
$(this).click(function(){alert(this);});
});
Дело в том, что live работает следующим образом: «навешивает» eventlistener на document, соответствующий вашему событию и передает в него селектор, который вы указали в $(«selector»).live(...). А eventlistener уже вызывает вашу функцию, когда событие проходит вверх от child'ов до document.
Вот live()(и die()) по-моему самая глупая глупость жквери. Можно же было навешивание событий на динамически создаваемые ноды внедрить в bind()(unbind()) и не париться с отслеживанием своего хтмла.
Вышел jQuery 1.4.1