Выбор jQuery сделан с неупорядоченным списком, не нажимающим - PullRequest
1 голос
/ 25 августа 2010

Я использую неупорядоченный список для замены функции выбора.У меня есть комбинация штата и города, где я выбираю штат, а затем он автоматически завершает город.Традиционный выбор для регистрации.

Проблема в том, что я могу делать jSon, но когда я загружаю

в города, я не могу получить клик.Я покажу код:
$('ul#states li a').click(function() {

    var uf = $(this).find('span.value').html();

    var $comboCidades = $('ul#cities');
    if (uf == 0) {
        //$comboCidades.html('<a href="javascript:;"><span>Selecione</span></a>');
        return;
    }
    $.getJSON('/contato/cidades/', { uf: uf }, function(data) {
        var options = ''; 
        var dataLength = data.length;
        for (i = 0; i < dataLength; i++) {
            options += '<li><a href="javascript:void(0);">'+data[i]['nome']+'<span class="value" style="display:none">'+data[i]['id']+'</span></a></li>';
        }   
        $comboCidades.html(options);
    });         

});

Это код Jquery, я запрашиваю / contato / cidades /, что Returns является для меня замкнутым JSON со всеми городами, он отлично работает.

Итак, я заполняю тег

  • , проблема в том, что я не могу выбрать города
  • , он не получил значения, но, если ядобавив
  • без загрузки с помощью json, он может получить значение из li.

    Есть ли проблема при загрузке

  • с помощью jquery и html (), что это не настоящий
  • ?Можно ли это исправить с помощью некоторых функций jQuery?!

    МОЙ HTML-КОД:

    <div class="input">
        <label>Cidade:</label>
        <div class="select">
            <p><a href="javascript:;"><span>Selecione</span></a></p>
            <ul>
                <li><a href="javascript:;">Santa Catarina</a></li>
            </ul>
        </div>
    </div>
    

1 Ответ

4 голосов
/ 25 августа 2010

Я предполагаю, что вы присваиваете событие click для элементов в #cities, когда страница загружается.

Проблема в том, что если эти элементы не существуют при загрузке страницы, они не получают событие.

Попробуйте использовать .live() вместо:

$('ul#cities li a').live('click', function() {...

Или лучше, используйте .delegate(), если у вас jQuery 1.4 или новее.

$('ul#cities').delegate('li a', 'click', function() {...

Это помещает обработчик в ul#cities, поэтому, пока он существует при загрузке страницы, обработчик будет там для вас. (Аналогично live(), который помещает обработчик выше DOM.)

Примечание, когда вы ссылаетесь на идентификатор, $('#cities') немного лучше, чем $('ul#cities').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...