Родительские элементы jQuery - PullRequest
1 голос
/ 09 октября 2011

У меня есть следующая разметка:

<div class="display-none" id="team_[NEXT-NUMBER-BY-PHP]">
<div id="ajax-json-loading"></div><div id="ajax-json-response"></div>
<table cellspacing="5">
 <tr>
  <td valign="top" style="width: 100px;">
   <b>SOMETHING</b>
  </td>
  <td id="team-leader-area">
   <div id="team-leader-id"><a href="javascript:void(0)"><?php echo $value['leader']; ?></a></div>
   <div id="team-leader-modify"><a href="javascript:void(0)" onClick="changeAdmin(this.offsetParent)">Modify</a></div>
  </td>
 </tr>
 <tr>
  <td valign="top" style="width: 100px;">
   <b>SOMETHING ELSE:</b>
  </td>
  <td>
   <?php echo $value['p_address']; ?>
  </td>
 </tr>
</table>
</div>
<div class="display-none" id="team_[NEXT-NUMBER-BY-PHP]">
...

Что повторяется.Как вы видите, у меня есть функция JS в #team-leader-modify div, и мне нужно изменить контекст #team-leader-id.

Возможно ли это с использованием «родительских» элементов управления?Если да, то как?Если нет, какой самый простой способ?

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

Ответы [ 3 ]

0 голосов
/ 09 октября 2011

Прежде всего, примите к сведению комментарии к вашему ответу, поскольку в вашем коде есть серьезные недостатки.

В любом случае, если «changeAdmin» запускается из «div # team-leader-modify», вы можете получить доступ к «# team-leader-id» с помощью этого:

 $('#team-leader-modify').parent('td').find('#team-leader-id')

Удачи!

0 голосов
/ 09 октября 2011

Учитывая, что [NEXT-NUMBER-BY-PHP] = 100 для «текущей» итерации:

<div class="display-none team_data" id="team_100">
 <div class="ajax-json-loading"></div>
 <div class="ajax-json-response"></div>
 <table cellspacing="5">
  <tr>
   <td valign="top" style="width: 100px;">
    <b>SOMETHING</b>
   </td>
   <td class="team-leader-area">
    <div class="team-leader-id">
     <a><?php echo $value['leader']; ?></a>
    </div>
    <div class="team-leader-modify">
     <a>Modify</a>
    </div>
   </td>
  </tr>
  <tr>
   <td valign="top" style="width: 100px;">
    <b>SOMETHING ELSE:</b>
   </td>
   <td>
    <?php echo $value['p_address']; ?>
   </td>
  </tr>
 </table>
</div>

Тогда вы можете использовать обработчик кликов jQuery:

$(document).ready(function(){
    $('.team-leader-modify a').click(function(){
        changeAdmin($(this).parent());
    });
});

В качестве альтернативы, если вам нужен идентификатор текущей команды, вы можете:

$(document).ready(function(){
    $('.team-leader-modify a').click(function(){
        changeAdmin($(this).parents('.team_data')[0].id);
    });
});

Что даст вам id в содержащем div.

0 голосов
/ 09 октября 2011

Может быть попробовать:

$('#team-leader-modify').closest('td').find('div#team-leader-id')

Но я не знаю, слишком ли это конкретно. Вы могли бы сделать:

$('#team-leader-modify').closest('td').find('div:first-child')

Что, возможно, немного более гибко.

...