Javascript 在jquery中是否有类似于相邻选择器的东西?

Javascript 在jquery中是否有类似于相邻选择器的东西?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我正在尝试为这段代码使用合适的选择器,但我似乎无法让它工作 <ul id="message-list"> <li class="clearfix message success unread"> <a href="/messages/mark_read/61/" class="message-close"></a> <h4> <strong>

我正在尝试为这段代码使用合适的选择器,但我似乎无法让它工作

<ul id="message-list">
    <li class="clearfix message success unread">
        <a href="/messages/mark_read/61/" class="message-close"></a>
        <h4>
            <strong>
                Getting Real: The Smarter, Faster, Easier Way To Build A Successful Web Application
            </strong>
            has been added to your profile.
        </h4>
        <form action="/profile/tweet/NIZNQwAACAAJ/" method="post">
            <div style="display:none">
                <input type="hidden" value="3b723be17da67c5bc54b27a98a660d53" name="csrfmiddlewaretoken">
            </div>
            <input type="submit" class="button tweet-button" value="Tweet This Book">
        </form>
    </li>
</ul>
  • 实现:构建成功Web应用程序的更智能、更快、更简单的方法 已添加到您的个人资料中。

$('.tweet按钮')。单击(函数(e){
var$list_item=$(this.parent('ul li.message');<------?

var$anchor=$(this).parent('a');/?因为
li.message
不是按钮的直接祖先,所以使用搜索DOM树直到到达
li.message

var $list_item = $(this).parents('li.message');
由于锚点是输入的
窗体的同级
父级,因此在选择
.parent()
后使用以下命令获取锚点:

var $anchor = $(this).parent().siblings('a');
顺便说一下

  • a
    表单
    不相邻,尽管它是其同级元素之一

  • 输入
    直接嵌套在
    表单
    中是无效的HTML。jQuery仍然可以使用它,但验证器会抱怨(如果您关心这类事情的话)

另一种方式,使用和穿过锚,使用:

var $anchor = $(this).parent().siblings('a');
var $list_item = $(this).closest('li.message');
var $anchor = $(this).closest('form').prev().prev('.message-close');