Динамический клик через JavaScript (или jQuery) на флажок - PullRequest
0 голосов
/ 10 июля 2010

Я знаю, что могу поменять отмеченный атрибут на отмеченный, но мне нужно на самом деле «щелкнуть» по флажку, чтобы запустить событие щелчка live () (jQuery).Я знаю, что могу также сделать это функцией, но это было бы намного чище и меньше кода, если это возможно.

О, и к вашему сведению:

$('.modal-form [name='+json[0].owners[x].name+']').click();

Не работает.Он проверяет их, но на самом деле не «щелкает» их там, где jQuery запускает событие live ()

Вот вызов AJAX, если кому-то интересно:

$('.agenda-modal input[type=checkbox]:not([name="emergency-item"])').live('click',function(){
        iid = $('.agenda-modal').attr('data-defaultitemid');
        the_type = $(this).parent().parent().attr('id');
        checked_item = $(this).val();

        if($(this).attr('checked')){
            if(the_type == 'the-elected-list'){
                $livepreview.agenda({
                    action:'update',
                    type:'owner',
                    id:iid,
                    owner:checked_item
                });
            }
            else if(the_type == 'the-bureau-list'){
                $livepreview.agenda({
                    action:'update',
                    type:'bureau',
                    id:iid,
                    bureau:checked_item
                });
            }
        }
        else{
            $livepreview.agenda({
                action:'get',
                type:'item',
                id:iid,
                callback:function(json){
                    if(the_type == 'the-elected-list'){
                        for(x in json[0].owners){
                            if(json[0].owners[x].name == checked_item){
                                $livepreview.agenda({
                                    action:'delete',
                                    type:'owner',
                                    id:json[0].owners[x].item_owner_id
                                });
                            }
                        }
                    }
                    else if(the_type == 'the-bureau-list'){
                        for(x in json[0].bureaus){
                            if(json[0].bureaus[x].name == checked_item){
                                $livepreview.agenda({
                                    action:'delete',
                                    type:'bureau',
                                    id:json[0].bureaus[x].item_bureau_id
                                });
                            }
                        }
                    }
                }
            });
        }
    });

Ответы [ 3 ]

0 голосов
/ 10 июля 2010

пожалуйста, включите пример. вы, скорее всего, не находите нужный элемент, создавая сложное выражение. смягчите.

var el = $('.modal-form [name='+json[0].owners[x].name+']')
alert( el.length )

Тогда вы можете .trigger('click') это. Убедитесь, что обработчик событий связан / установлен.

0 голосов
/ 10 июля 2010

Очевидно, я не знаю вашу кодовую базу, но мне действительно интересно, будет ли вызов функции путем фальсификации взаимодействия с пользовательским интерфейсом "намного чище".Это может быть меньше кода, но это звучит очень хрупко для меня.Что происходит, когда пользовательский интерфейс изменен?Или другой разработчик изменяет обработчик событий live(), не понимая, что ваш код также неявно использует его?Перемещение кода в отдельную функцию делает его более разборчивым и более надежным (и, вероятно, не намного длиннее).

0 голосов
/ 10 июля 2010

Это «щелкнет» флажок. Я не уверен, что он будет запускать событие, связанное с live ().

$('#myCheck').click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...