2010-02-20 2 views
2

Эта проблема делает меня немного сумасшедшим.jquery traversing and tables

У меня есть что-то вроде этого

<h3>Feeds 
    <span><a class="smallbutton create_feed" href="javascript:;"> 
    <strong>Create New</strong> 
    </a> 
    </span> 
    <span class="div_form_add_feed"> 
    <a class="smallbutton btn_save_feeds" href="javascript:;"> 
    <strong> Add </strong></a> 
    </span> 
    </h3> 
<table cellpadding=0 cellspacing=1 class="table"> 
<tr><td> 
<div class="get_feeds_news">test</div></td></tr></table> 

Я хочу класс Добавить ссылку «smallbutton btn_save_feeds» заменить Див «get_feeds_news» с чем-то другим. Но я не могу, похоже, перейти к нему, используя $ (this) в jQuery.

Каков правильный путь для перехода из класса Add link «smallbutton btn_save_feeds», чтобы изменить someting в div «get_feed_news»? Я попробовал следующее, но не работал.

$(this).closest('.get_feeds_news').html('hihi'); 

Проблема в том, что она находится внутри стола?

Заранее спасибо.

+0

@Scott - я добавил еще одно решение для моего ответа, хотя, если будет определенное количество этих элементов, придание элементу идентификатора будет лучше, чем обход. Если это не так, см. Мой обновленный обход. – user113716

ответ

1

closest() не будет работать, так как элемент, который вы ищете, не является предком кнопки.

get_feeds_news Если это единственное вхождение этого класса, вы могли бы просто использовать $('.get_feeds_news')

В противном случае, вы могли бы сделать что-то вроде:

$(this).closest('h3').next().find('.get_feeds_news')

JQuery есть много способов перемещения. Это, конечно, не единственный способ сделать это. Если ваш макет изменится, будет какой-то способ выполнить то, что вам нужно.

+0

ах .. это вещь. У меня есть два экземпляра. –

+0

Я добавил второй пример, чтобы захватить ближайший h3, затем перейдите к следующему брату и найдите ваш get_feeds_news. – user113716

+0

блестящий! это работает! –

2

вы пропустили точку (плюс закрывающий тег Div)

$(this).closest('.get_feeds_news').html('hihi'); 
+0

жаль об этом. Я написал это неправильно в примере. Но в моем коде у меня была точка и все еще не работала. –

+0

Это не работает. – user113716

0

попробовать фиксируя свой HTML, вы не закроете get_feeds_news DIV:

<table cellpadding=0 cellspacing=1 class="table"> 
<tr><td> 
<div class="get_feeds_news"></div></td></tr></table> 
+0

извините за это. Я написал это неправильно в примере. Но в моем коде я закрыл его правильно. –

0

вы можете выбрать один из двух элементов на

$('.get_feed_news:eq(0)') 

(или 1 для второй)

или, если у вас есть 2 ссылки smallbutton btn_save_feeds (один для каждого .get_feed_news), вы можете использовать:

$('.get_feed_news').eq($(this).index()) 

, что в основном проходит индекс для фильтрации .get_feed_news с индексом вызывающего абонента:]