Я нажимаю на ссылку в ячейке таблицы. Я должен получить значение определенной ячейки в этой той же строке таблицы.
<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>
Мне присоединили обработчик щелчков к ссылке в четвертой ячейке. Тот обработчик щелчков вызывает функцию, которая открывает модальное окно. Когда форма в модальном отправлена, я хочу также передать значение td класса = "два" от строки, в которой на ссылку нажали к этому модальному.
Вот функция, которая отправляет модальное (проблемная область получает правильное значение для 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
});
};
Проблема состоит в том, что я не могу получить правильное значение для Чего-то. Это должно быть значение td class=two в той же строке как нажатый элемент.
Путем это все объединяется. Нажмите на целевую ссылку, которая называет метод по имени Send_Click (). Send_Click делает некоторые проверки и затем звонит, Отправляют (), но значение для Чего-то никогда не заполняется. Это потому что this
не то, что я думаю, что это? Hjelp!
Вместо этого вы хотите .children ()
( документация здесь ):
$(this).closest('tr').children('td.two').text();
Вот подход, который я использовал для обнаружения сбоев построения из MSDeploy при удаленном запуске скрипта Nant для развертывания. Это не идентичный scenerio, но должен дать вам концепцию, чтобы идти с. В основном вы можете запустить это из оболочки, вам нужен язык сценариев, как powershell, чтобы захватить вывод и чем пост обрабатывает обычный текст, возвращающийся из msdeploy. Я разобрал эту проблему с командой MSDeploy и дал им знать, что с этим трудно справиться.
-121--3311357-[Кто-нибудь знает] другие грамматические «особенности» современных языков программирования?
Один из моих любимых, Modula-3 , был разработан в 1990 с благословением Никлауса Вирта как новейший в то время язык в «семье Паскаля». Кто-нибудь еще помнит эти ужасные бои о том, где точка с запятой должна быть разделителем или терминатором ? В Modula-3, выбор за вами! EBNF для последовательности операторов имеет значение
stmt ::= BEGIN [stmt {; stmt} [;]] END
Аналогично, при записи альтернативных вариантов в инструкцию CASE
, Modula-3 позволяет использовать вертикальную строку |
в качестве разделителя или префикса. Таким образом, вы можете записать
CASE c OF
| 'a', 'e', 'i', 'o', 'u' => RETURN Char.Vowel
| 'y' => RETURN Char.Semivowel
ELSE RETURN Char.Consonant
END
или вы можете оставить от начальной планки, возможно, потому, что вы предпочитаете написать OF
в этой позиции.
Я думаю, что мне нравилось так же, как сам дизайн, это осознание дизайнерами того, что идет религиозная война и их упорство в поиске способа поддержки обеих сторон. Пусть программист выбирает!
P.S. Objective Caml допускает разрешительное использование |
в выражениях случаев, в то время как более ранний и близкородственный диалект Standard ML не имеет. В результате выражения случаев часто являются более уродливыми в коде Standard ML.
EDIT : После просмотра ответа T.E.D. я проверил грамматику Modula-2, и он правильный, Modula-2 также поддерживает точку с запятой в качестве терминатора, но через устройство пустого оператора, который делает вещи, как
x := x + 1;;;;;; RETURN x
законным. Полагаю, это неплохо. Однако Modula-2 не позволял гибко использовать разделитель корпуса |
; похоже, это произошло с Modula-3.
Ник имеет правильный ответ, но я хотел бы добавить, что вы также можете получить данные ячейки, не нуждаясь в имени класса
var Something = $(this).closest('tr').find('td:eq(1)').text();
: eq (#)
имеет отсчитываемый от нуля индекс ( ссылки ).
поэтому вы можете использовать parent() для достижения родительского tr и затем использовать find для сбора td с классом два
var Something = $(this).parent().find(".two").html();
или
var Something = $(this).parent().parent().find(".two").html();
использовать столько же parent(), сколько глубина нажатого объекта в соответствии со строкой tr
надеюсь, это работает...