我正在尝试将<h4>
内的文字放在距离我点击的图标<i>
以下注册单击OK,但它不会返回h4内的值。相反,它会返回一长串详细信息,如您所见,对Codepen来说太长了:
<p class="icon heart">
<i>icon</i>
</p>
<h4>this text</h4>
$('body').on('click', '.icon.heart i', function(e){
var property = [];
console.log('clicked!');
console.log($(e).closest( ".intro-text h4" ));
});
我哪里错了?
http://codepen.io/franhaselden/pen/pboYvZ
编辑:
我更新了HTML以更能代表我的代码布局。如何访问<h4>
内的内容?
答案 0 :(得分:1)
您的第一个问题是e
是一个Event对象,而不是DOM元素。
您可能意味着this
或e.target
然后你遇到了第二个问题(我之前没有注意到,因为你没有在问题中包含HTML,我为你解决了这个问题。)
查看the documentation of closest:
对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取与选择器匹配的第一个元素。
h4
不是斜体文本的祖先!所以它不会被发现。
你需要找到段落,然后找到它的兄弟。
$(this).closest("p").next("h4");
答案 1 :(得分:0)
您错过了最后for
的右括号
console.log
不是h4
的父级,因此i,
无法工作,您可能需要使用closest
。
nextAll
jQuery(document).ready(function() {
$('.iconheart').on('click', function(){
var property = [];
console.log('clicked!');
console.log($(this).nextAll( "h4" ).html());
});
});
答案 2 :(得分:0)
你可以这样做:
$(document).ready(function() {
$('body').on('click', '.icon.heart i', function() {
var property = [];
console.log('clicked!');
console.log($(this).closest(':has(.intro-text)').find('h4').html());
});
});
此处的完整示例:https://jsfiddle.net/cn8trrhn/