使用JQuery来获取兄弟姐妹

Dav*_*zzi 9 jquery

我正在尝试获取下面的标记以从选择中获取值并将其粘贴到输入中.

<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>
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何抓住兄弟姐妹.我试过,$(this).siblings("input").val()但错误的网页错误'parentNode.firstChild' is null or not an object.

试过$(this).prev().prev().val(),然后回来未定义.抓住这些东西最好的方法是什么?

谢谢,大卫

Tim*_*awa 14

您的问题源于您的方法.直接调用函数将不会执行您期望的操作,即使用表示<a>标记的jquery对象.您可以注册一个函数来响应click<a>上的事件,而不是直接调用函数.

首先,给你的链接一个id:

<a href="#" id="appendSelect">append</a>
Run Code Online (Sandbox Code Playgroud)

然后使用用appendField()响应的jQuery选择替换你的函数click

$(document).ready(function() {
  $("#appendSelect").click(function() {
    var $thatInput = $(this).siblings("input");
    var $selectValue = $(this).siblings("select").val();
    $thatInput.val($selectValue);
  })
});
Run Code Online (Sandbox Code Playgroud)

用这种方法$(this)代表你的<a>.

你可以通过使用javascript调试控制台来看到我正在谈论的更深入的内容(chrome默认使用一个,你可以在Firefox上使用Firebug).再次尝试基于原始函数的方法并添加console.log($(this));语句.您应该看到它打印出DOMWindow对象.现在在click函数中放入相同的日志语句,你会看到jQuery给你一个$(this)代表你期望它.


Dar*_*o Z 5

尝试:

$(this).parent().children("input:first").val();
Run Code Online (Sandbox Code Playgroud)