我正在尝试获取下面的标记以从选择中获取值并将其粘贴到输入中。
<td class="ms-formbody" style="width:385px">
<input name="ctl00$PlaceHolderMain$dlFields$ctl00$txtSource" type="text" id="ctl00_PlaceHolderMain_dlFields_ctl00_txtSource" class="ms-input" />
<select name="ctl00$PlaceHolderMain$dlFields$ctl00$ddlSourceFields" id="ctl00_PlaceHolderMain_dlFields_ctl00_ddlSourceFields" class="ms-input">
<option value="Some Field Name 1">Some Field Name 1</option>
<option value="Some Field Name 2">Some Field Name 2</option>
<option value="Some Field Name 3">Some Field Name 3</option>
<option value="Some Field Name 4">Some Field Name 4</option>
</select>
<a href="javascript: appendField();">append</a>
</td>
我似乎无法弄清楚如何抓住兄弟姐妹。我尝试了$(this).siblings("input").val()
但错误的网页错误'parentNode.firstChild' is null or not an object
。
尝试$(this).prev().prev().val()
,然后回复未定义。抓住这些东西最好的方法是什么?
谢谢, 大卫
答案 0 :(得分:14)
您的问题源于您的方法。直接调用函数将不会执行您期望的操作,即使用表示&lt; a&gt;的jquery对象。标签。您可以注册一个函数来响应&lt; a&gt;上的click
事件,而不是直接调用函数。
首先,为您的链接指定一个ID:
<a href="#" id="appendSelect">append</a>
然后使用将appendField()
函数替换为响应click
的jQuery选择
$(document).ready(function() {
$("#appendSelect").click(function() {
var $thatInput = $(this).siblings("input");
var $selectValue = $(this).siblings("select").val();
$thatInput.val($selectValue);
})
});
使用此方法$(this)
将代表您的&lt; a&gt;。
你可以通过使用javascript调试控制台来更深入地了解我正在谈论的内容(chrome默认使用一个,你可以在Firefox上使用Firebug)。再次尝试基于原始函数的方法并添加console.log($(this));
语句。您应该看到它打印出DOMWindow对象。现在将相同的日志语句放在click
函数中,您将看到jQuery已经为您提供了一个$(this)来表示您的预期。
答案 1 :(得分:4)
尝试:
$(this).parent().children("input:first").val();
答案 2 :(得分:1)
appendfield方法无法访问$(this)。
这是工作代码: http://jsfiddle.net/NBf4d/2/
答案 3 :(得分:0)
使用.children()或.find()
.children只查找父母的直接子女,查找父母以下所有级别的内容。
$('.ms-formbody').find('select').val();
答案 4 :(得分:0)
这仅适用于这些ID,但您可以轻松更改它们:
$('#ctl00_PlaceHolderMain_dlFields_ctl00_txtSource').val($('#ctl00_PlaceHolderMain_dlFields_ctl00_ddlSourceFields').val());
答案 5 :(得分:0)
试试这个......
$(this).parent().find('input:first').val(selectedOptionValue);