#jquery
#jquery
Вопрос:
У меня есть следующий код
<form name="frm1">
<table id="mytable" border="1" cellspacing="2" cellpadding="2">
<tr>
<td>
column1
</td>
<td>
column2
</td>
<td>
column3
</td>
</tr>
<tr>
<td>
ABC
</td>
<td>
<select name="mydd" class="mydd">
<option value="ABC">ABC</option>
<option value="DECF">DECF</option>
<option value="GHHHH">GHHHH</option>
</select>
</td>
<td>
<input type="text" name="textvalue" id="textvalue" value="kljaslkjd">
</td>
</tr>
<tr>
<td>
ABC
</td>
<td>
<select name="mydd" class="mydd">
<option value="222">222</option>
<option value="333">333</option>
<option value="444">444</option>
</select>
</td>
<td>
<input type="text" class="textvalue" name="textvalue" id="textvalue" value="kljaslkjd">
</td>
</tr>
</table>
</form>
код jquery, как показано ниже:
$(document).ready(function(){
$(".mydd").change(function(){
var value= $(this).closest("tr").find(".textvalue").attr("name");
alert('value:' value);
});
});
Что я пытаюсь сделать, так это то, что когда я меняю раскрывающийся параметр, я получаю ближайший tr, а затем нахожу для элемента ввода. Первый элемент всегда возвращает значение undefined. Но второй элемент работает нормально. В чем может быть причина?
Ответ №1:
В первом <input>
отсутствует textvalue
класс. Изменить
<input type="text" name="textvalue" id="textvalue" value="kljaslkjd">
Для
<input type="text" class="textvalue" name="textvalue" id="textvalue" value="kljaslkjd">
Разметка также содержит несколько элементов с повторяющимися идентификаторами, что является недопустимым HTML. Так что также измените первое id="textvalue"
на id="textvalue1"
, а второе на id="textvalue2"
.
Ответ №2:
Дублированные идентификаторы — они будут получать вас каждый раз. Это может быть проблемой здесь. Во-вторых, у первого нет нужного класса — или a class, если на то пошло.
Ответ №3:
Я предлагаю вам всегда использовать оба варианта для ваших html-тегов (name, id), потому что у вас может быть два элемента с одинаковым именем, и в этом вообще нет проблем, но идентификатор должен быть уникальным, и идентификатор — это то, что важно для javascript, а имя важно для серверного языка, такого как PHP.
И входные теги, из которых вы запускаете это, не имеют класса textvalue , так что, возможно, в этом проблема.
Ответ №4:
У <input>
в первой строке нет class="..."
.
Следовательно .textvalue
, не находит его.