Другим способом решения этой проблемы может быть рефакторинг вашего кода.
Вы сузили его до селектора - как насчет этого:
$('option.ProductsInCatListOption').live('click', function () {
var option = $(this).clone();
alert('works');
var slist = $(this).parent().prev('.SelectedList');
option.appendTo(slist);
$(this).detach();
});
HTML:
<select class="ProductsInCatList"
id="ProcessorMainList"
multiple="multiple"
name="ProcessorMainList">
<option value="6"
class="ProductsInCatListOption">
Intel 2nd Gen Core i7 2600 Socket 1155 Processor
</option>
<option value="8"
class="ProductsInCatListOption">
Intel 2nd Gen Core i5 2500 Socket 1155 Processor
</option>
<!-- etc -->
</select>
Просто псевдо-пример, но я думаю, что-то вроде этого должно работать.
Также я никогда не использовал live () или делегат (), но вот документы для делегата ():
http://api.jquery.com/delegate/
Надеюсь, это поможет.
UPDATE:
другой подход может заключаться в том, чтобы прикрепить событие ко всем элементам и проверить, когда событие запущено, чтобы увидеть, является ли щелчок нужным элементом. Это ужасно, и я не рекомендую вам это делать, но вот как:
$('option').click(function(e){
if ($(this).parents().filter('.ProductsInCatList').length>0)
{
//this click came from an option which is a
//child of the select you are interested in
var minime = $(this).clone();
alert('boo!');
$(this).remove();
}
});