Проблема взаимодействия с добавлением span в span - jQuery - PullRequest
1 голос
/ 25 июня 2011

Первый вопрос здесь!Я пытаюсь создать почтовую систему и сейчас работаю над настройкой списка получателей.Я добавляю имена пользователей в диапазон и хочу удалить пользователей, щелкнув по имени.

<span id="to"></span>

мой скрипт:

$("#auto").autocomplete($("#base_uri").val()+'search',{
        req_type: "POST",
        minChars: 1,
        delay: 200
        }).result(function(event, data, formatted) {
                if($("#to").html() == ''){
                    $("#to").prepend('<span id="'+data[1]+'">'+formatted+'</span>');
                }
                else {
                    $("#to").prepend('<span id="'+data[1]+'">'+formatted+', '+'</span>');
                }
                $("#fake_to").val($("#fake_to").val()+ data[1] +', ');
                $("#auto").val('');
        });

$("#to span").click(function(){
        $(this).hide();
    });

data [1] и отформатированные строки, содержащие имена.

Я думал, что этот подход добавит пролеты, которые можно скрыть, щелкнув по ним.Почему-то это не так.Скрытие не выполняется при нажатии на текст в области добавления.

Помощь будет наиболее полезной!=)

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Это должно работать:

$("#to").delegate('span', 'click', function() {
   $(this).hide();
});

Я бы предложил использовать .delegate() вместо .live(), поскольку вы можете указать контекст, к которому присоединяется событие прослушивания, где .live() присоединяет событие к самому документу.

0 голосов
/ 25 июня 2011

Вам нужно изменить:

$("#to span").click(function(){
        $(this).hide();
    });

до:

$("#to span").live('click',function(){
        $(this).hide();
    });

Привязка .click связывает только те промежутки, которые существовали на момент выполнения кода. .live применяется также к любым экземплярам, ​​созданным в будущем.

...