2016-01-13 2 views
-1

Как получить родительский идентификатор с помощью jQuery?

$('td').click(function() { 
 
    myId = $(this).parent().attr("id"); 
 
    myItem = $(this).text(); 
 
    alert('u clicked ' + myId); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>Computer</td> 
 
    </tr> 
 
    <tr> 
 
    <td>maths</td> 
 
    </tr> 
 
    <tr> 
 
    <td>physics</td></div> 
 
    </tr> 
 
</table>

Когда я щелкаю по пункту таблицы Я хочу получить уведомление 'u clicked science', но я получаю undefined.

Любая помощь будет оценена!

+0

Try, тревога ('у щелкнул' + myItem); – Ravneet

+2

Почему я не вижу никаких 'id' в html? – Rajesh

+0

Пожалуйста, отредактируйте свой вопрос, чтобы показать внешний html - ваш текущий код не показывает никаких атрибутов идентификатора или даже строки 'science' в любом месте. Я предполагаю, что это содержалось в элементе parenet, но для ответа мне нужно было бы увидеть этот элемент – Steve

ответ

2

В вашем markup нет атрибутов id. Все, что вы имеете дело с innerText

$('td').click(function() { 
 

 
    var myItem = $(this).text(); 
 
    alert('u clicked ' + myItem); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>Computer</td> 
 
    </tr> 
 
    <tr> 
 
    <td>maths</td> 
 
    </tr> 
 
    <tr> 
 
    <td>physics</td> 
 
    </tr> 
 
</table>

+0

'' u щелкнула науку'' сильно предполагает, что есть родительский элемент, который не показан в вопросе. «наука» не появляется ни в одном из текстовых узлов, а «компьютер, математика и физика» могут быть свободно рассмотрены в областях науки, но, в конечном счете, ее никто не догадывается, если OP не отвечает – Steve

1

Вы недопустимая разметкой. дополнительный закрывающий div добавляется после последней тройной разметки. вам нужно удалить его.

Что нужно для оповещения - это текст элемента, а не идентификатор родителя. использовать .text() вместе с кликали тд элементы контекста Jquery:

$('td').click(function(){ 
 
myItem=$(this).text(); 
 
alert('u clicked ' +myItem); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<table> 
 

 

 
<tr><td>Computer</td></tr> 
 

 

 
<tr><td>maths</td></tr> 
 

 
<tr><td>physics</td></tr> 
 

 
</table>

0

попробовать это:

$('td').click(function() { 
     alert('u clicked ' + $(this).text()); 
    }); 
0

Как я уже заметил, вам не хватает ID в tr. Я добавил еще несколько td s для демонстрации.

$('td').click(function() { 
 
    var myId = $(this).parent().attr("id"); 
 
    var myItem = $(this).text(); 
 
    alert('u clicked ' + myId); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table> 
 
    <tr id="IT"> 
 
    <td>Computer</td> 
 
    </tr> 
 
    <tr id="General"> 
 
    <td>maths</td> 
 
    <td>History</td> 
 
    </tr> 
 
    <tr id="Science"> 
 
    <td>physics</td> 
 
    <td>Chemistry</td> 
 
    <td>Biology</td> 
 
    </tr> 
 
</table>

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