Он должен не находиться в цикле, поскольку вы ( правильно ) используете метод live.
Однако вы неверно передаете данные SWF.
должно быть $('.thumbnail').live('click', {swf:$swf}, function(e){
Теперь вы можете получить к нему доступ из обработчика с помощью e.data.swf
Вы также используете метод .die()
docs для отмены привязки к предыдущим обработчикам активных нажатий ( в случае, если ваш код запускался более одного раза ), поэтому
$('.thumbnail').die('click').live('click', {swf:$swf}, function(e){
Я также изменил ваш код, добавив идентификатор на каждую миниатюру, чтобы вы могли легко сопоставить их с массивом видео.
$videos += '<li class="video"><img class="thumbnail" data-videoid="'+$i+'" src="' + $thumbnail + '" alt="' +$title + '" /></li>';
Вы можете получить это videoid
, если щелкнуть элемент с помощью метода .data()
docs как $(this).data('videoid')
Демо на http://jsfiddle.net/gaby/JfqtK/