Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

jQuery, не аттачится click

347
07 октября 2012 года
Maniak
319 / / 05.11.2005
почему то не присоединяется событие click ко всем вновь добавленным элементам по маске contains. Про live, on, delegate знаю, тоже пытался применить, но всеравно...
selcity1 - input type=text
citys1 - div
Код:
$("#selcity1").keyup(function(e){
            if (e.keyCode==27) $("#citys1").hide();
            else{
                if ($(this).val().length > 2){

                    var msg = "";
                    $("#cityshide li a span:contains(" + $(this).val() + ")").each(function(index, elem){
                        console.log($(elem).parent().attr("id"));
                       
                                               // Вот тут ничего не добавляется
                                                $(elem).parent().click(function(){
                            alert("ff");
                        });

                        msg = msg + $(elem).parent().parent().wrap("<div>").parent().html();
                    });
                    if ( (msg != "")&&($("#selcity1").val() != "") ) $("#citys1").show(); else $("#citys1").hide();
                    $("#findcity div ul").html(msg);
                }
            }
        });
1
07 октября 2012 года
kot_
7.3K / / 20.01.2000
Попробуй вначале получить указатель на элемент. А потом вызывай .on
347
08 октября 2012 года
Maniak
319 / / 05.11.2005
попробовал так в теле each:
 
Код:
$(this).parent().parent().on("click", "a", function(){
alert( "xxx" );
});
все равно не работает....
8
08 октября 2012 года
mfender
3.5K / / 15.06.2005
kot_ верно говорит. У этих элементов нет click(). Инициализируй в переменной внутри связывания, и приделывай не к click(), а всё таки через "bind" или "live".
347
08 октября 2012 года
Maniak
319 / / 05.11.2005
что то я не понимаю(
271
09 октября 2012 года
MrXaK
721 / / 31.12.2002
Вообще вам предлагают что-то типа:

 
Код:
$("#cityshide li a span:contains(" + $(this).val() + ")").each(function(index, elem){
                        var q = $(elem);
                        q.parent().click(function(){
                            alert("ff");
                        });
});
Я бы сделал:
 
Код:
$('body').on('click', "#cityshide li a span:contains(" + $(this).val() + ")", function() {
  alert('ff');
});
А в целом, live() и bind() - deprecated в jQuery 1.7

И, судя по вашему коду, у вас есть скрытый div с городами, причём в формате <a><span>город</span></a>... Это жутко и неудобно. Храните города в JSON)))

И ещё, не забывайте, что если у <a> нету href, то он будет показываться как обычный текст, даже если у него будет onclick.
347
09 октября 2012 года
Maniak
319 / / 05.11.2005
Все равно не работает к сожалению....
Но спасибо за подсказку с json, если переделать под него, то тогда нужно будет формировать html уже внутри цикла и наверное отпадет необходимость аттачить события к <a> который ищется в списке городов, а приаттачить к только что созданному, что скорее всего пройдет без проблем...

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог