нацеливание на ближайший тег определенного класса, а не первый в прототипе - PullRequest
0 голосов
/ 04 июня 2010

Я написал функцию javascript, которая использует innerHtml именованного div (который происходит сразу после скрипта) для каждой строки в качестве вывода. проблема в том, что если я использую $('divname'), он всегда находит первый экземпляр, а не ближайший. Какой самый простой способ в прототипе для нацеливания на ближайший "divname" div?

например (обратите внимание, я использую Grails, поэтому теги <g:...>):

<g:each ... >  
  <tr>  
    <td colspan = "4">  
      <g:javascript>  
       ...  
       $('outputdiv').innerHTML = theoutput;  
      </g:javascript>  
      <div id='outputdiv' /> //target THIS instance, not the first!  
    </td>  
  </tr>  
</g:each>

1 Ответ

1 голос
/ 04 июня 2010

РЕДАКТИРОВАТЬ: Я изначально прочитал вопрос, как относящийся к jQuery, но идея должна быть такой же для Prototype или любой другой библиотеки.

Похоже, это то, что вы хотите сделать:

$('#outputdiv').html(theoutput);

Поскольку идентификаторы в документе должны быть уникальными, #outputdiv будет выбранным вами селектором. Если вы используете outputdiv для нескольких идентификаторов, вы не используете допустимую разметку и получите непредсказуемые результаты.

Если вам нужна группа outputdivs, вам нужно сделать его CSS-именем класса и, вероятно, сделать что-то с closest( ) jQuery *1013* или nextAll( ) или prevAll( ).

Также обратите внимание, что ваша функция попытается установить innerHTML элемента, который еще не существует. Возможно, вы захотите запустить его на DOMReady или включить свой скрипт после того, как элемент будет закрыт и «готов» в DOM.

// Assuming theoutput is available in this context
$(document).ready(function(){ $('#outputdiv').html(theoutput) });
...