【问题标题】:jQuery child of clicked element单击元素的 jQuery 子元素
【发布时间】:2010-09-26 10:35:12
【问题描述】:

我有一个链接列表,其中附加了一个点击事件,我需要从子 A 链接获取 ID。因此,在下面的示例中,如果我单击第一个列表元素,我需要重新调整谷歌。

我尝试过'$this a',但无法完全确定语法。

$("ul li").click(function(event){
  $("input").val($(this).html());             
});
<ul>
    <li><a href="http://www.google.com" id="google">Google</a>
</ul>

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    我没有看到示例 HTML,但是

    $(this).find('a:first').attr('id')
    

    会这样做(修复 a:first 选择器,如果它不是你的意思)

    this指的是触发你的事件的元素

    【讨论】:

    • 我可以提议:jQuery(this).find('a:first').attr('id') 吗?我只是在与原型的项目中发生冲突。
    【解决方案2】:

    为了让你的代码更整洁,让我们使用如下函数绑定触发器: (我建议您给您的 UL 提供一个 ID,以便它只针对该 UL 中的元素)

    $('ul li').bind('click', getAnchorId);
    

    被调用的函数 (getAnchorId) 获取被点击元素 (ul li) 的子元素 (a) 的 ID 属性,并将其应用于变量 (anchorId),并显示其获取我输入的正确信息结果是警报。

    function getAnchorId() {
        var anchorId = $(this).children('a').attr('id');
        alert(anchorId);
    }
    

    现在你可以用这个变量做任何你想做的事:)

    希望这会有所帮助:)

    【讨论】:

    • 这是非常主观的,我个人更喜欢使用匿名函数,尤其是因为它是如此具体。
    • 同意,使用 bind 只是额外的按键操作,而不是使用 .click。
    【解决方案3】:

    您可以使用children 方法:

    $(this).children('a').eq(0).attr('id');
    

    我不确定语法,但是这样的东西应该可以工作。

    【讨论】:

    • 使用数组索引器会返回一个 dom 对象,因此 .attr 方法将不存在并且会出错。你需要 $(this).children('a')[0].id 或 $(this).children('a').get(0).id 或 $(this).children('a')。 attr('id');
    • 你确定它返回一个 DOM 对象吗?无论哪种方式,我都说我不确定,我会在某个时候测试它并纠正它,如果它是错误的。
    • 我使用.eq(int) 修复了它,它返回指定索引处的 jQuery 元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多