单击元素的 jQuery 子元素

Posted

技术标签:

【中文标题】单击元素的 jQuery 子元素【英文标题】:jQuery child of clicked element 【发布时间】: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>

【问题讨论】:

【参考方案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 元素。

以上是关于单击元素的 jQuery 子元素的主要内容,如果未能解决你的问题,请参考以下文章

jquery

jquery事件

如何在 vuejs 中隔离父元素和子元素之间的单击事件处理程序

第二十二节 jQuery事件

jquery如何删除子元素

Jquery如何选取元素及其所有子元素?