обработчики событий jQuery, не стреляя в IE

Вы хотите использовать itertools.combination, вы можете получить комбинации всех клавиш, используя

import itertools

for e1, e2 in itertools.combinations( idkey.keys(), 2 ):
    InterestingFriends(e1,e2)

Я думаю, что это намного красивее, чем вложенные циклы for.

6
задан Nick Craver 2 August 2010 в 01:06
поделиться

3 ответа

IE будет терять события в зависимости от того, как вы добавляете вещи в DOM.

var ele = $("#itemtocopy");

$("#someotheritem").append( ele ); // Will not work and will lose events

$("#someotheritem").append( ele.clone(true) );

Я бы также рекомендовал использовать .live () для событий click, чтобы немного упростить ваш код. Mouseover / out еще не поддерживается live. http://docs.jquery.com/Events/live

8
ответ дан 10 December 2019 в 00:44
поделиться

У меня был аналогичная проблема. пытаясь использовать .ready для загрузки div при начальной загрузке страницы. хорошо работает в FF, но не в ie7.

Я нашел способ обойти это.

У меня есть вызов функции обратного вызова, divLoaded ().

В divLoaded я проверяю $ ('# targetdiv'). InnerText.length <50 или все, что, по вашему мнению, указывает на то, что он не загружался. Если я обнаруживаю этот случай, я просто вызываю функцию, которая снова загружает этот div.

Как ни странно, я также добавляю "." в innerText, прежде чем я вспомню функцию ajax. Кажется, что иногда мы проходим 3 или 4 цикла, прежде чем, наконец, выполняется загрузка ajax.

Это наводит меня на мысль, что document.ready довольно безупречно работает в IE7, что, похоже, развеивает миф о его ненадежности. Что на самом деле «кажется», так это то, что .load немного нестабилен и не работает, когда страница только что загружена.

Я все еще немного зелен со всем jQuery, так что возьмите это с долей скептицизма. Интересно услышать, как кто-нибудь возьмет мою маленькую гипотезу.

ура

грег

0
ответ дан 10 December 2019 в 00:44
поделиться

Я просто потратил целый день на устранение неполадок, когда события не запускались для элементов, добавленных в DOM (IE7, jQuery 1.4.1), и это было не потому, что мне нужно было использовать live () (хотя, полезно знать, Чад) И не потому, что мне нужно было клонировать предметы.

Это произошло потому, что я выбирал теги привязки, в которых был знак «#», вот так:

var myitem = $('a[href=#top]');

Мое решение состояло в том, чтобы использовать «Селектор, содержащий атрибут», вот так:

var myitem = $('a[href*=top]');

К счастью, у меня достаточно контроля над всем, что он вряд ли сломается в будущем. Технически это не связано с добавленными объектами, но, надеюсь, кому-то это сэкономит время.

2
ответ дан 10 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: