单击元素的 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 子元素的主要内容,如果未能解决你的问题,请参考以下文章