Вы хотите использовать itertools.combination, вы можете получить комбинации всех клавиш, используя
import itertools
for e1, e2 in itertools.combinations( idkey.keys(), 2 ):
InterestingFriends(e1,e2)
Я думаю, что это намного красивее, чем вложенные циклы for.
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
У меня был аналогичная проблема. пытаясь использовать .ready для загрузки div при начальной загрузке страницы. хорошо работает в FF, но не в ie7.
Я нашел способ обойти это.
У меня есть вызов функции обратного вызова, divLoaded ().
В divLoaded я проверяю $ ('# targetdiv'). InnerText.length <50 или все, что, по вашему мнению, указывает на то, что он не загружался. Если я обнаруживаю этот случай, я просто вызываю функцию, которая снова загружает этот div.
Как ни странно, я также добавляю "." в innerText, прежде чем я вспомню функцию ajax. Кажется, что иногда мы проходим 3 или 4 цикла, прежде чем, наконец, выполняется загрузка ajax.
Это наводит меня на мысль, что document.ready довольно безупречно работает в IE7, что, похоже, развеивает миф о его ненадежности. Что на самом деле «кажется», так это то, что .load немного нестабилен и не работает, когда страница только что загружена.
Я все еще немного зелен со всем jQuery, так что возьмите это с долей скептицизма. Интересно услышать, как кто-нибудь возьмет мою маленькую гипотезу.
ура
грег
Я просто потратил целый день на устранение неполадок, когда события не запускались для элементов, добавленных в DOM (IE7, jQuery 1.4.1), и это было не потому, что мне нужно было использовать live () (хотя, полезно знать, Чад) И не потому, что мне нужно было клонировать предметы.
Это произошло потому, что я выбирал теги привязки, в которых был знак «#», вот так:
var myitem = $('a[href=#top]');
Мое решение состояло в том, чтобы использовать «Селектор, содержащий атрибут», вот так:
var myitem = $('a[href*=top]');
К счастью, у меня достаточно контроля над всем, что он вряд ли сломается в будущем. Технически это не связано с добавленными объектами, но, надеюсь, кому-то это сэкономит время.