我不是一个jQuery专业版,我花了很长时间才弄明白如何让'it'正常工作
这是一段代码:
$(this).parents('li:eq(0)').find('.dataPostArea').replaceWith(text); //1
$(this).parents('li:eq(0)').find('.hoverMenu').show(); //2
这是html:
<li class="post issuePost" data-winbook-contentType="Issue" data-winbook-issueId="null">
<div style="display:none;" class="hoverMenu">
<a href="#delete">
<img class="hoverButton deleteButton" src="deleteredicon.png"/>
</a>
<a href="#edit">
<img class="hoverButton editButton" src="editpencil.png"/>
</a>
</div>
<div class="postContainer">
<div class="avatarColumn">
<a href="#">
<img src="defaultavatar.jpg"/>
</a>
<div class="authorName">
<a href="#">Nupul</a>
</div>
</div>
<div class="postDetailsContainer">
<div class="dataPostArea">
<textarea class="dataForm" style="float:left; min-height:50px; min-width:330px; resize:none; margin:2px; margin-bottom:5px; overflow-x:hidden;" name="data">
</textarea>
<button class="addDataButton" style="width:95px; margin:3px 2px; padding:1px 4px 1px 4px;">
Add Issue
</button>
<button class="cancelDataButton" style="width:95px; margin:3px 2px; padding:1px 4px 1px 4px;">
Cancel
</button>
<div class="clear"/>
<span>10 characters left</span>
</div>
</div>
</div>
<div class="clear">
</div>
</li>
现在,如果1和2的顺序如图所示'.hoverMenu'永远不会显示。实际上,jQuery对象的大小为零!如果2在1之前它工作正常。我不知道为什么。有什么想法吗?
(如果你想知道我想要完成什么:只需在可编辑的textarea中获取内容并用该列表项的内容替换textarea。类似于stackoverflow的“添加注释”功能:)
我可能正在执行不正确的“查询”,并且非常欢迎更正。我没有缓存$(this).parents('li:eq(0)')
,也不认为这个问题应该重要。 (应该吗?)
答案 0 :(得分:1)
您的$(this)
对象是<button class="addDataButton">
,对吗?一旦发布,你用txt替换它。 corrrect?
$(this).parents('li:eq(0)').find('.dataPostArea').replaceWith(text); //1
将删除按钮对象$(this)
,然后使第二行无效。这就是为什么它告诉你它不存在(没有发现任何),这就是为什么当你切换它的时候
如果您想保持订单执行此操作
listelement = $(this).parents('li:eq(0)');
listelement.find('.dataPostArea').replaceWith(text);
listelement.find('.hoverMenu').show();