2012-04-25 4 views
8

Я пытаюсь настроить таргетинг на элемент внутри моего LI, только у меня возникают проблемы, я прочитал документацию jQuery, но не могу понять, что я делаю неправильно?Найти элемент в родительском контейнере с jQuery

На событие щелчка Я хочу, чтобы найти элемент и изменить HTML внутри ...

http://jsfiddle.net/68ePW/3/

<li> 
    <h2>400</h2> 
    <form> 
     <input type='submit' class='click' value='send'>     
    </form> 
</li> 

$('.click').click(function(){ 
    $(this).parent('li').closest('h4').html('asdasd'); 
}); 
+1

Какой элемент? И что с этим делать? Покажите свой код ** здесь **, JS Fiddle является приятным дополнением, но ваши вопросы должны иметь смысл и сохранять свою полезность, не полагаясь на внешние сайты. –

+0

Я думаю, вы хотели использовать «h2» в качестве параметра для ближайшего() – Christian

+1

'$ (this) .closest ('li'). Find ('h2')'? – zerkms

ответ

19

На основе следующего HTML (имейте в виду, я должен был обернуть li с ul, так как развернутого li недействителен HTML):

<ul> 
    <li> 
     <h2>400</h2> 
     <form> 
      <input type='submit' class='click' value='send'>     
     </form> 
    </li>  
</ul>​​​​​​​​​​​​​​​​​​ 

И следующий JQuery:

$('.click').click(function(){ 
    $(this).parent('li').closest('h4').html('asdasd'); 
}); 

Кажется, вы пытаетесь найти h4 внутри li. Проблемы, возникающие у вас, несколько:

  1. Использование parent() только ищет непосредственный родительский элемент текущего элемента; использовать closest() вместо того, чтобы искать через предков пока не находит соответствующий элемент,
  2. closest() (как уже упоминалось) выглядит до через элементы предка, в то время как вы пытаетесь найти элемент среди потомков li элемент. Использовать find(),
  3. Вы искали элемент h4, которого не было. Вам понадобилось (я полагаю) найти h2, который присутствовал в DOM.

Итак:

$('.click').click(function(){ 
    $(this).closest('li').find('h2').html('asdasd'); 
}); 

JS Fiddle demo.

Ссылки:

+0

Спасибо @ David Thomas, я вижу, что это работает на jsfiddle, только это не на моем фактическом сайте, на загрузке страницы форма изначально отображается: нет и становится видимой только при нажатии кнопки вверх, чтобы переключиться на ее вид, может ли это быть причиной? – Liam

+0

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

+4

«Я вижу, что это работает на jsfiddle, только это не на моем фактическом сайте» --- и теперь ** ваша работа должна заставить ее работать. Мы здесь, чтобы понять, как это сделать, а не делать все для вас. – zerkms

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