2013-04-12 4 views
-2

У меня возникли проблемы с выбором тега p внутри идентификатора с кликом, код выглядит следующим образом;jQuery выберите p внутри этого

<tbody> 
    <tr id="test1"> 
    <p> 
     Some random text that should show up in the dialog. 
    </p> 
     <td>test</td> 
     <td>test</td> 
    </tr> 
    ... the rest of the tr's are identical, nothing else to see here. 
</tbody> 


$('#test1, #test2, #test3, #test4').click(function(){ 
    $(this 'p').dialog(); 
}); 

Попробуй жить; http://team-blandsaft.no-ip.org/

Лучше привыкнуть писать код в редакторе stackoverflow.

+2

Off тему: Tr элементы должны только у детей тд. Также $ (этот 'p') даже не синтаксически корректен –

+2

Если вы поместите этот HTML-код на страницу, 'p' будет перемещен (поскольку он не является допустимым дочерним элементом' tr') в другом месте, когда DOM построено: [демонстрация JS Fiddle] (http://jsfiddle.net/davidThomas/UQ2NL/). –

ответ

4

использование .find()

$(this).find('p').dialog(); 

или вы можете использовать context selector

$('p',this).dialog(); 

, который внутренне использует метод найти

Как уже упоминалось у вас есть недопустимый HTML с <p> в качестве детей <tr>

От MDN docs для тр

Допустимое содержание: Ноль или более <td> или <th> элементов, или смесь из них

+2

И это * все еще * не будет работать, так как 'p' будет перемещен за пределами элемента' table', когда DOM будет построен *, потому что это недопустимый html *: [JS Fiddle] (http: // jsfiddle .net/davidThomas/UQ2NL /). –

+0

@initium, не является синтаксисом для открытия диалогового окна пользовательского интерфейса jquery '.dialog ('open')'? – Travis

+0

@initium Вам придется вытащить эти 'p' элементы из вашей таблицы, так как это недопустимый HTML (или поместить их в' td'). Если вы вытащите их из своей таблицы, вы можете дать им все класс, а затем выбрать в этом классе, чтобы активировать ваши диалоги: '$ ('. Dialog-class'). Dialog();'. Таким образом, вы не зависите от своей таблицы, чтобы выбрать, какие элементы превращаются в диалог. – ajp15243

0
$('#test1, #test2, #test3, #test4').click(function(){ 
    $(this).children('p').dialog(); 
});