使用THIS选择器从按钮旁边的输入中检索值

时间:2015-06-04 10:20:25

标签: javascript jquery button input this

我遇到了这个问题,我有两个兄弟,一个输入和一个调用函数来检索输入中的值的按钮,但它一直告诉我Value是未定义的......

这是"表格":



<li>
<input id="mem3" value="TestU4" disabled="">
<button id="del3" class="delmem" onclick="deleteBandMember();">remove</button>
</li>
&#13;
&#13;
&#13;

这里的jQuery代码:

&#13;
&#13;
function deleteBandMember() {
  var mmbr = $(this).prev("input").val();  //<-RETURNS UNDEFINED
}
&#13;
&#13;
&#13;

我需要使用此选择器,因为有太多动态创建的输入... 谢谢!

4 个答案:

答案 0 :(得分:3)

this作为deleteBandMember函数中的参数传递,如下所示: -

HTML: -

<li>
<input id="mem3" value="TestU4" disabled="">
<button id="del3" class="delmem" onclick="deleteBandMember(this);">remove</button>
</li>

jQuery: -

function deleteBandMember(elem){
   var mmbr = $(elem).prev("input").val();
}

Demo

答案 1 :(得分:2)

直接使用jQuery,您可以附加一个点击处理程序:

HTML:

<li>
<input id="mem3" value="TestU4" disabled="">
<button id="del3" class="delmem">remove</button>
</li>

JS:

$('#del3').click(function(){
  var mmbr = $(this).prev("input").val();
})

答案 2 :(得分:0)

虽然Kartikeya是正确的。我建议不要使用&#34; onClick&#34;属性,它不再是一个好习惯。另外,您正在使用jQuery,因此您可以利用它。所以你的代码看起来像是:


$('#del3').click( function() {
  var mmbr =  $(elem).prev("input").val();
  // do more stuff. 
})

答案 3 :(得分:0)

除了问题有一个很好的答案之外,如果您的表单中有大量输入和按钮,您可能需要考虑event delegationjQuery让这很容易。不是将事件附加到每个按钮,而是将一个事件附加到包含这些元素的元素(如<form>):

HTML

<form id="form">
...
  <li>
    <input id="mem3" value="TestU4" disabled=""></input>
    <button id="del3" class="delmem">remove</button>
  </li>
  <li>
    <input id="mem34" value="TestU44" disabled=""></input>
    <button id="del34" class="delmem">remove</button>
  </li>
...
</form>

JQUERY

$('#form').on('click', '.delmem', function() { deleteBandMember(this); });

DEMO