如何在td之间找到最接近的形式

时间:2013-05-23 22:59:52

标签: jquery

我有一个奇怪的情况。我需要在td之间有一个表格。我需要这个用于ajax的一些内容更新,并且只希望在部分中提交一行。所以每行可能有2或3种形式。

但是,$(this).closest找不到此form - > undefined
我如何才能最好地选择此form

我的 html

<table>
    <tr>
        <form myid='hi'>
        <td> <a href="#">Delete</a> </td>
        </form>
    </tr>
    <tr>
        <form myid='hi2'>
        <td> <a href="#">Delete</a> </td>
        </form>
    </tr>
</table>

我的 jQuery

$('a').click(function() {
    var val = $(this).closest('form').attr('myid');  
    alert(val);  // undefined!
    return false; 
});

http://jsfiddle.net/tbc4G/3/

2 个答案:

答案 0 :(得分:3)

jsFiddle Demo

向上移动到最近的td,然后找到第一个上一个表单

var val = $(this).parents('td:first').prev("form:first").attr('myid');   
alert(val);  

答案 1 :(得分:1)

我不会通过以下方式使我的HTML无效: -

  1. 将表单放置为tr
  2. 的子级
  3. 自定义属性不以data-
  4. 为前缀

    不确定您的确切HTML布局,但您可以尝试这种方式。

    HTML

    <table>
        <tr>
            <td>
                <form data-myid='hi'>
                    <table>
                        <tr>
                            <td><input type="text" value="1" /></td>
                            <td>Label</td>
                            <td> <a href="#">Delete</a> 
                            </td>
                        </tr>
                    </table>
                </form>
            </td>
        </tr>
          <tr>
            <td>
                <form data-myid='hi1'>
                    <table>
                        <tr>
                            <td><input type="text" value="1" /></td>
                            <td>Label</td>
                            <td> <a href="#">Delete</a> 
                            </td>
                        </tr>
                    </table>
                </form>
            </td>
        </tr>
          <tr>
            <td>
                <form data-myid='hi2'>
                    <table>
                        <tr>
                            <td><input type="text" value="1" /></td>
                            <td>Label</td>
                            <td> <a href="#">Delete</a> 
                            </td>
                        </tr>
                    </table>
                </form>
            </td>
        </tr>
    </table>
    

    脚本: -

    $('a').click(function () {
    
        var val = $(this).closest('form').data('myid');
        alert(val);
        return false;
    });
    

    Fiddle