2017-01-17 3 views
0

У меня есть список динамически созданных элементов, которые при щелчке запускают запрос ajax и отображает результат. Проблема в том, что он работает только при двойном щелчке. Первый щелчок по элементу не работает. В то время как второй щелчок работает отлично. Я не понимаю причины этого. Я действительно пытался unbind(), но это не помоглоФункция щелчка не работает, как ожидалось, на динамически создаваемых элементах JQuery

$("#profiles_name ul a").on('click',function(event){ 
     $.ajax({ 
    } 
    }); 
    });. 

Я попытался $("#profiles_name ul a").unbind().on('click',function(event).. Он не работал до сих пор.

Вот мой динамически созданный тег

<ul> 
    <a href="javascript:myfunction(this)" data-value="20/20"><li>Frontend Dev</li></a> 
    <li class="divider"></li> 
</ul> 

Кроме того, чтобы держать в примечании, что, например, если я два динамически созданный список, когда я нажимаю в списке 1 (первый раз) оно не рабочий список 1 (второй раз). После обновления страницы щелчок по списку 1 (первый раз) не работает и работает по списку 2 (первый раз). i.e Первый щелчок не работает независимо от динамически созданного элемента.

+0

Да, что никогда, кажется, работает для меня, попробуйте вместо этого:. '$ ("# Profiles_name ул") на ('нажмите', 'а' , function (event) {' – musefan

+0

Нет, это не работало –

+0

Покажите нам полный пример, затем – musefan

ответ

1

предпочитают использовать event delegation:

$("#profiles_name").on('click', 'ul a', function() { 
    $.ajax({ 
     // Your code here 
    }); 
}); 

Event delegation:

Event delegation allows us to attach a single event listener, to a parent element, that will fire for all descendants matching a selector, whether those descendants exist now or are added in the future.

+0

Нет, он не работал –

+0

Просто имейте в виду, что производительность может быть достигнута с помощью 'document', все зависит от того, насколько сложна ваша ситуация, конечно, большинство сценариев, которые вы не заметите. Обычно лучше предоставить более конкретный статический элемент, если сможете. Например: '$ (" # profiles_name "). On ('click', 'ul a', function (event) {' – musefan

+0

@musefan Вы абсолютно правы, я обновляю свой ответ с вашим замечанием –