0

このコードを機能させることができないようです。ボタンがクリックされたときに.abcの最も近い値を取得するにはどうすればよいですか?

最も近いものを定義する

つまり、「A:」が付いているボタンをクリックすると、値は10になります。「B:」にリストされているボタンをクリックすると、値は20になります。

コードは次のとおりです。

<script type="text/javascript">
$(function(){

 $('.test').click(function(){
  var value = $(this)
     .parent()
     .parent()
     .closest(".abc")
     .attr("value")
  alert(value);
  return false
 });

});
</script>
<form name="myform">
<table>
 <tr>
     <td>A:</td>
        <td><input type="text" class="abc" name="a" id="a" value="10" /></td>
        <td><input type="text" name="vbn" id="vbn" /></td>
        <td><input type="text" name="mkl" id="mkl" /></td>
        <td><input type="button" class="test" name="test" id="test" value="test" /></td>
        <td>B:</td>
        <td><input type="text" class="abc" name="b" id="b" value="20" /></td>
        <td><input type="text" name="ews" id="ews" /></td>
        <td><input type="text" name="hrs" id="hrs" /></td>
        <td><input type="text" name="ew3" id="ew3" /></td>
        <td><input type="text" name="3ws" id="3ws" /></td>
        <td><input type="button" class="test" name="test" id="test" value="test" /></td>
    </tr>
    <tr>
     <td>C:</td>
        <td><input type="text" class="abc" name="c" id="c" value="30" /></td>
        <td><input type="text" name="oiu" id="oiu" /></td>
        <td><input type="text" name="dfe" id="dfe" /></td>
        <td><input type="button" class="test" name="test" id="test" value="test" /></td>
    </tr>
    <tr>
     <td>D:</td>
        <td><input type="text" class="abc" name="d" id="d" value="40" /></td>
        <td><input type="button" class="test" name="test" id="test" value="test" /></td>
    </tr>
</table>
</form>
4

3 に答える 3

3
$('input.test').click(function() {

    $(this).parent()
           .prevAll('td:has(input.abc)')
           .find('input.abc:last')
           .val();

});

これが実用的なデモです

于 2009-12-09T23:15:03.157 に答える
2

少し前に、この状況で役立つプラグインを作成しました。これはnextALLと呼ばれます。

次のように使用します。

$(":button").click(function() {
    $(this).prevALL("td:has(.abc)").eq(0).find(".abc").val();
});
于 2009-12-09T23:11:47.250 に答える
0

あなたのhtmlコードが同じIDを持つ複数の要素で不適切にフォーマットされているという事実を無視して、このjavascriptコードはあなたが思っていることをしません。http://docs.jquery.com/Traversing/closestを参照してclosest()、現在の場所からツリーを検索します。.abcどのボタンのすぐ上のツリーにも、一致する要素はありません。あなたが探しているのは隣人であり、親ではありません。

私はこのようなことを試みます:

$(".test").click(function() {
  $(this).parent().parent().find(".abc").val();
});

ただし、特定のボタンの近くに複数の.abcがある場合の問題は解決されません。

コードを「正しく」記述し、IDと複数のクラスを使用してフィールドを直接参照するボタンを用意してみませんか?

于 2009-12-09T23:16:03.840 に答える