jQuery-uzyskanie wartości tekstowej komórki tabeli w tym samym wierszu co kliknięty element
Klikam link w komórce tabeli. Muszę uzyskać wartość określonej komórki w tym samym wierszu tabeli.
<tr>
<td class="one">this</td>
<td class="two">that</td>
<td class="three">here</td>
<td class="four"><a href="#">there</a></td>
</tr>
<tr>
<td class="one">qwqw</td>
<td class="two">dfgh</td>
<td class="three">ui</td>
<td class="four"><a href="#">there</a></td>
</tr>
Do linku w czwartej komórce jest dołączony moduł obsługi kliknięć. To kliknięcie wywołuje funkcję otwierającą okno modalne. Gdy formularz w modalu zostanie przesłany chcę również przekazać wartość td class = " two " z wiersza, w którym link został kliknięty do tego modalu.
Tutaj jest funkcja, która wysyła modal (obszar problemowy jest uzyskanie poprawnego wartość dla var):
var Send = function() {
var Name = $( '#name' ).val();
var Something = $(this).closest('td').siblings('.two').text(); // version 1. doesn't work
var Something = $(this).closest('tr').siblings('td.two').text(); // version 2 also doesn't work
var Something = $(this).attr('class'); // version 3. just a test but also doesn't work
$.ajax( {
async: false,
data: { name: Name, somedata: Something },
type: 'POST',
url: the url
});
};
Problem polega na tym, że nie mogę uzyskać prawidłowej wartości dla czegoś. Powinna to być wartość td class = two w tym samym wierszu co kliknięty element.
To wszystko łączy się w całość. Kliknij łącze docelowe, które wywołuje metodę o nazwie Send_Click (). Send_Click wykonuje pewne walidacje, a następnie wywołuje Send (), ale wartość czegoś nigdy nie jest wypełniana. Czy to dlatego, że {[2] } nie jest tym, o czym myślę? Hjelp!5 answers
You want .children()
instead (documentation here):
$(this).closest('tr').children('td.two').text();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-23 01:42:57
Nick ma poprawną odpowiedź, ale chciałem dodać, że możesz również uzyskać dane komórki bez konieczności podawania nazwy klasy
var Something = $(this).closest('tr').find('td:eq(1)').text();
:eq(#)
posiada indeks zerowy (link ).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-23 02:52:16
Powinno działać dobrze:
var Something = $(this).children("td:nth-child(n)").text();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-26 00:11:57
Więc możesz użyć parent (), aby dotrzeć do rodzica TR, a następnie użyć find, aby zebrać TD z klasą drugą
var Something = $(this).parent().find(".two").html();
Lub
var Something = $(this).parent().parent().find(".two").html();
Użyj tyle co parent () ile głębokość klikniętego obiektu zgodnie z wierszem tr
Mam nadzieję, że to zadziała...Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-23 02:47:03
To również zadziała
$(this).parent().parent().find('td').text()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-13 07:27:07