2016-08-16 5 views
-1

У меня довольно сложная форма, которая вызывает вызовы AJAX для рендеринга частичных файлов, которые извлекают определенную информацию.JQuery .on() Nested Click Event

Я ударил стену с конкретным сценарием, где я хочу привязать событие .on ('click') к элементу, который ведет себя как кнопка. Проблема в том, что этот элемент глубоко вложен в другие элементы, которые также уничтожаются во время частичного обновления. Вот пример HTML.

<div id="locations_grid"><%= render 'table' %> 

и парциальное:

<fieldset> 
    <legend>List</legend> 
    <div class="lists> 
    <div class="project_list"> 
     <div id="pagination_link"> 
     <a class="more"> 
      More records 
     </a> 
     </div> 
    </div> 
    </div> 
</fieldset> 

Из моего примера, я хочу, чтобы связать «Клик» событие к классу «более», который вложен в расположении дивы и FIELDSET , Видя, как «location_grid» делает HTML, это будет точка привязки для события .он(), видя, как он не будет уничтожен после того, как парциальное является refreshed- поэтому моя первая попытка была:

$('#locations_grid').on('click','.more', function(){ 
    //do something 
}); 

Однако, по-моему, я подозревал, что это не сработает (а это не так), потому что «.more» не является непосредственным ребенком «#locations_grid». Так что мои попытки до сих пор были различными комбинациями:

$('#locations_grid').on('click','fieldset .lists .project_list #pagination_link .more', function(){ 
    //do something 
}); 

Однако никто не кажется, успешно связывание события щелчка к классу «.more».

Если у кого-нибудь есть идеи относительно того, что мне не хватает, помощь будет принята! Спасибо Всем,

+0

вы пробовали '$ (документ) .он ('нажмите' 'больше', функция() {'? – vijayP

+0

@vijayP, да, но это не сработало + я не хочу для привязки к документу, а не к самому близкому элементу, который не был уничтожен. – JayJay

+0

@RoryMcCrossan, ну это не так .... – JayJay

ответ

0

Решение проблемы было проблемой с конвейером Ruby on Rails, не загружающим файл javascript.

Чтобы уточнить, моя первоначальная реализация была правильной.

$('#locations_grid').on('click','.more', function(){ 
    //do something 
}); 
0

вы можете использовать как ниже код

$('body').on('click','fieldset .lists .project_list #pagination_link .more', function(){ 
     //do something 
    }); 

or 

    $('body').on('click','.more', function(){ 
     //do something 
    }); 

Я думаю, что он будет работать

0

вы можете попробовать это, он будет применять щелчок слушателя все «а», имеющий класс более;

$('div').has(".more").on('click','.more', function(){ 
    //do something; 
    }); 
+0

Извините, Акшай, они не работают. Подумайте, что проблема с первой заключается в том, что элемент «a» уничтожается, когда частичное повторное рендеринг, что также разрушает привязку. – JayJay

+0

вы можете попробовать выше кода, у меня есть jsut отредактировал его. –