我试图使用post-content-[[!+post.id]]
获取.on('click')
的.html(),然而,控制台一直告诉我.parent()
{{1}没有功能} ...
我的HTML ...
.previous()
和我的剧本......
<div class="post-wrapper">
<div class="post-header">
<div class="post-avatar floatLeft">
<a href=""><img class="miniCircle" src="[[!+post.photo]]"></a>
</div>
<div class="post-info floatLeft">
<span class="in-line"><a href="">[[!+post.owner]]</a></span>
<span class="in-line"><time class="timeago smallFont" datetime="[[!+post.date]]"></time></span>
</div>
<div class="clear"></div>
</div>
<div class="post-content">
<div id="post-content-[[!+post.id]]" class="post-content i-content">[[!+post.content]]</div>
</div>
<div class="post-footer">
[[!+post.links]]
<span class="ui-icon ui-icon-star" style="display: inline-block" title="Like"> </span>
</div>
</div>
如何消除&#34; TypeError:$(...)。parent(...)。previous不是函数&#34;并获取$('body').on('click', '.ui-icon', function (event) {
console.log('content: ' + $(this).parent("div").previous("div").descendant(".i-content").html());
// TypeError: $(...).parent(...).previous is not a function
});
中的内容而不通过ID引用它?
通过ID获取该div的html内容仅适用于第一页加载,然后一旦我的ajax更新内容,即使我完全使用新ID,它也将无法定位,因为DOM已更改。但是我知道如果我使用相对定位,我可以获取html内容,因为我在教程中看到了它,但该教程仅使用post-content-[[!+post.id]]
及其<ul>
子项来设置单层元素集。
答案 0 :(得分:2)
应该是.prev([selector])
和.children([selector])
,但这只会向下移动一行。
给定一个表示一组DOM元素的jQuery对象,.children()方法允许我们在DOM树中搜索这些元素的子元素,并从匹配元素构造一个新的jQuery对象。 .children()方法与.find()的不同之处在于.children()只沿DOM树向下移动一个级别,而.find()可以遍历多个级别以选择后代元素(孙子等)。另请注意,与大多数jQuery方法一样,.children()不返回文本节点;要获取包括文本和注释节点在内的所有子节点,请使用.contents()。
或者,您可以尝试通过CSS ancestry引用孩子。
Here是文档中的一个很好的参考,你可能会找到一些我没有列出的替代选项。不过, previous()
肯定应该是prev()
!至于回答这个问题。
这是我很久以前在学习jQuery时所做的实现的参考(我还不是专家,我做的是SuiteScript / Automation / Business Logic):
$(".title").click(function(){
var height = $(this).parent().children(".content").children("p").height();
if($(this).parent().children(".content").height() == 0){
height = height.toString() + 'px';
/* Reset styling of all posts */
$(".title").css("color","black");
$(".content").css({"height": "0px", "color": "#5a5858"});
/* Set this post's styling */
$(this).css('color','white');
$(this).parent().children(".content").css({'height': height, 'color':'white'});
/* On unclick */
} else {
$(this).css('color', 'black');
$(this).parent().children(".content").css({'height': '0px', 'color':'#5a5858'});
}
});
答案 1 :(得分:2)
.previous()不存在,既不使用prev()和.descendant(),也可以使用.children()或find()
https://api.jquery.com/children/
,它告诉你不是一个函数,因为它确实不存在,不是因为你编码中的任何错误。
答案 2 :(得分:1)
尝试 console.log('content:'+ $(this).parent()。prev()。children()。html());