JQuery - захватить значение td рядом с переключателем - PullRequest
3 голосов
/ 19 января 2010

У меня следующая дилемма: Мой HTML как таковой (он существует в приложении PL / SQL.):

<table id="search_result_table">
<tr>

<input type=radio name="pv_select" value="'||lv_spriden_id||'"/>
<font face="Calibri" size=3><td id="spriden_id"     name="spriden_id">'||lv_spriden_id||'</td></font>'
<font face="Calibri" size=3><td id="last_name" class="c_last_name"     name="last_name">'||lv_spriden_last_name||'</td></font>
<font face="Calibri" size=3><td id="first_name" class = "c_first_name"     name="first_name">'||lv_spriden_first_name||'</td></font>
</tr>
</table>

Я могу получить выбранное значение переключателя через:

$("input[name=pv_select]:checked").val()

Однако я хотел бы иметь возможность получить значение ячейки столбца "last_name" (которая существует в таблице рядом с переключателем). Как я могу получить это значение (для выбранной строки с помощью переключателя) через jQuery?

Я пробовал несколько вещей, но ни одна из них не работает:

$("input[name=pv_select]:checked").parent().siblings("td:eq(1)").text());    

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 19 января 2010

HTML неверен;не уверен, что это портит ваше дерево DOM и, таким образом, сбивает с толку jQuery, поскольку он пытается пройти через сломанное дерево DOM.

Вот правильный HTML:

<table id="search_result_table">
    <tr>
        <td>
            <input type=radio name="pv_select" value="'||lv_spriden_id||'"/>
        </td>
        <td id="spriden_id" name="spriden_id"><font face="Calibri" size=3>'||lv_spriden_id||'</font></td>
        <td id="last_name" class="c_last_name" name="last_name"><font face="Calibri" size=3>'||lv_spriden_last_name||'</font></td>
        <td id="first_name" class = "c_first_name" name="first_name"><font face="Calibri" size=3>'||lv_spriden_first_name||'</font></td>
    </tr>
</table>

И jQuery для получения значенияячейка таблицы «фамилия» в той же строке, что и переключатель с флажком:

$("input[name=pv_select]:checked").parent().siblings("td.c_last_name").text());

(я говорю, что HTML верен: значения атрибута id должны быть уникальными на странице HTML, поэтому, если у вас есть несколько строк, использующих одинаковые атрибуты id для ячеек таблицы, это тоже недопустимо.)

0 голосов
/ 19 января 2010

Я только что понял, что это работает в Firefox, но не в IE. Поэтому я буду анализировать причины сбоя в одном браузере, а не в другом.

0 голосов
/ 19 января 2010

Ваш селектор работает с общей таблицей с вводом в td и текстом фамилии в другом td

возможно, ваша проблема в том, что фамилия объявляется после отправки, поэтому вы должны попытаться изменить селектор с помощью

$("input[name=pv_select]:checked").parent().siblings("td:eq(0)").text();

где я только что изменил индекс брата (если я правильно указал дамп таблицы, ваши .siblings ("td: eq (1)") - это Имя, eq (0) - фамилия )

Просто предложение ..

EDIT

Когда вы опубликовали свой html-отрывок, я понял, что вам не нужно проверять родственные элементы родительского радио. Так как его родитель - tr , а братья и сестры tr в таблице - это просто еще одна строка таблицы.

Что вы можете рассмотреть, это использовать функцию обхода .next () , которая перемещается к следующему элементу в DOM

Печально, что я не могу проверить это достаточно в FF (или только потому, что Firebug / jquery ext.), Но это именно тот код, который вы точно просили (получите следующий элемент радиовхода):

$('input[name="pv_select"]:checked').next();

единственная проблема заключается в том, что следующий элемент - это элемент font , который я не могу правильно отобразить в FF (и не находится в строке таблицы - он отображается непосредственно внутри body в инспекторе FireBug), поэтому .children () не может найти или что вы пытаетесь найти

...