2013-10-26 1 views
0

Я создаю Содержание динамически.Как переключать динамически созданные div на основе атрибутов класса и имени?

уровни иерархии:

  • Родитель Div

    • Дети Div

      • Гранд Дети Div

Для этого я создаю div динамически.

Затем я назначаю разницу для этих div.

Родитель Div: - Нет Маржа

Дети Div: -margin-left :15px;

Гранд Дети Div: -margin-left :35px;

Так что я могу создать таблицу содержания динамически.

Проблема:

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

В этом клике я столкнулся с проблемой в slideToggle(). Как я использую класс, поэтому из-за этого он применяется и к другим.

Пример:

$('main_div').haml(['%div.g', {id:'g_' + i', name: i}, Parent Div]);//class = 'g' 

$('main_div').haml(['%div.g1', {id:'g_' + i, name: i, style:'**margin-left: 15px**;'}, Children Div]);//class = 'g1' 

$('main_div').haml(['%div.g2', {id:'g_' + i, name: i, style:'**margin-left: 35px**;'}, Grand Children Div]);//class = 'g2' 

В этом Div 'я' значение поступает из базы данных по с помощью AJAX GET.

Итак, какие изменения я должен сделать для slideToggle(): В этом я просто хочу переключить только на дочерние родительские дочерние div?

Любые советы/предложения, пожалуйста?

Код ссылки:

$('#main_div').on('click','.g', function(){ 
    $('#main_div').find('.g1,.g2').slideToggle(); 

}); 
+0

Покажите нам код, в котором вы применяете slideToggle() – Moob

+0

Есть ли у нас какой-либо другой метод, отличный от этого, если у меня нет дочерних div, но я хочу упорядочить их в родительском и дочернем и детском формате? – eegloo

ответ

2

Если я понимаю правильно, slideToggle() для всех родителей DIV нажмите событие? Вместо функции вы можете использовать эту переменную.

$(this).find(...some selector for child divs...').slide.. 

Показать, пожалуйста, код для события click?

+0

Спасибо за ваше подтверждение. Я могу переключиться, но в одно время я хочу переключать детей одного родителя, а не других родителей. – eegloo

+0

Да, только один, используйте «найти», чтобы найти этих детей в родительском $ (this) .find ('. G1'). Slide(); // это найти только childs в текущем родителе – baltov

+0

Пробовал это, но не переключился. – eegloo

2

Попробуйте это:

$('#main_div').on('click','.g', function(){ 
    $(this).find('.g1,.g2').slideToggle(); 
}); 

Когда JQuery вызывает ваш щелчок обработчик он устанавливает this к щелкнутому пункту, то есть к .g элементу, поэтому применяется только .find() к потомкам этого элемента с помощью $(this).find(...

+0

Пробовал это, но не переключил. – eegloo

+0

Я понял. Выше работает отлично. класс g не был родителем для класса g1 и класса g2, поэтому он не работал. Спасибо – eegloo

+0

Есть ли у нас какой-либо другой метод, кроме этого, если у меня нет дочерних div, но я хочу упорядочить их в родительском и дочернем и детском формате? – eegloo

Смежные вопросы