代码之家  ›  专栏  ›  技术社区  ›  H4mm3rHead

使用jquery获取元素的上一个同级

  •  2
  • H4mm3rHead  · 技术社区  · 15 年前

    我有一个页面,其中有多个文本框,后跟一个“浏览”链接,如下所示:

    [文本框1]浏览
    [文本框2]浏览
    [文本框3]浏览

    现在我想知道我推的是哪个文本框的浏览链接。我想设置一个全局变量(如何在javascript/jquery中设置?)并保存文本框,或者至少保存文本框的类/id/名称,这样我就可以从浏览路由中知道要操作哪个文本框。

    我不知道文本框的ID或任何内容,因为它是在运行时生成的。我只知道它是浏览链接的前一个兄弟。

    编辑: 无法运行,这是我的jquery方法,仅用于测试:

    $(document).ready(function() {
        $('#BrowseLink').click(function() {
            alert($(this).prev('input[type=text]').attr('id'));
            return false;
        });
    });
    

    它会发出警报说“未定义”…

    这是我在页面上的标记:

    <input id="Image"  name="Image" width="5px" type="text" value=""></input>&nbsp;<a id="BrowseLink" href="#">Browse</a>
    

    编辑编辑 查看我的标记,我解决了它,它也是一个实体,因此需要 prev().prev()

    2 回复  |  直到 12 年前
        1
  •  2
  •   Darin Dimitrov    15 年前
    // attach a click handler to all of the browse links
    $('a.someClassThatAllBrowseLinksAreMarkedWith').click(function() {
        var associatedTextBoxValue = $(this).prev('input[type=text]').val();
        // TODO: do something with the value
        return false;
    });
    
        2
  •  4
  •   Greg    15 年前

    你可以使用 .prevAll() 方法:

    someGlobal = $(this).prevAll('input[type=text]:last').attr('id');
    

    要生成全局变量,只需不使用 var 当您“声明”/初始化它时。