2012-06-06 12 views
0

У меня есть ниже код и он работает, но то, что это правильный путь, чтобы получить таблицу OnClick СДВПравильный способ получить детям

HTML

<div> 
    <h4 class="titlebar"> 
     Skills 
     <small><a onclick="return false;" href="/add/" data-span="3">Add</a></small> 
    </h4> 

    <div class="body"> 
     <table class="table"> 
      <tbody> 
       <tr><td width="125"></td></tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

JQuery

var TableBlock = $(this).closest('.titlebar').next().children('table'); 

this указывает Добавить ссылку

+0

Нет, нет никакого обработчика нажмите? – Bergi

+0

Что такое 'this'? –

+0

Дайте нам полный HTML или, по крайней мере, родительский '

'. – gdoron

ответ

3

Вы не указали, кто является родителем <div class="body"> и <h4 class="titlebar">, что является критическим.

$(this).closest('table-parent(the missing parent)').find('table'); 

find лучше childern, потому что он будет работать, даже если таблица получить вложенные в будущем развитии.

Если вы хотите только совпавшего таблицу:

.find('table').first(); 
//Or 
.find('table:first'); 

Update: на основе обновления вашего вопроса, я хотел бы добавить к родителю div класса или id:

<div class="parent" > 
    <h4 class="titlebar"> 
    ... 

Затем:

$(this).closest('div.parent').find('table'); 

Если вы не можете изменить DOM:

$(this).closest('h4.titlebar').parent().find('table'); 

Или:

$(this).closest('h4.titlebar').siblings('.body').find('table'); 
+0

Он сказал в первой строке 'onclick of add', что означает, что' this' является якорем внутри 'h4', если я не ошибаюсь. –

+0

@Joy. Возможно, но для этого нет обработчика кликов. Но вы, вероятно, правы. во всяком случае, недостающий родитель более критичен. – gdoron

+0

@ gdoron радость прав я обновил вопрос. Теперь я сомневаюсь, что jquery достаточно умен, чтобы получить только первый. В вашем случае, если у меня есть вложенные таблицы, что произойдет – aWebDeveloper

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