我在div中有<span>
个标记,当用户点击它们时会将其删除。工作正常。
我想将.text()
存储在变量中的div中。问题是更新的文本未存储。
单击一个单词将其删除jsFiddle。
如您所见,content
变量返回旧文本,而不是新修订的文本。
如何使用更新后的文本存储变量?
jQuery的:
jQuery(document).ready(function() {
jQuery(document).on("mousedown", ".hello span", function() {
// don't add full stop at the end of sentence if it already ends with
var endChars = [".", "?", "!"];
jQuery(this).fadeOut(function(){
var parentObj = jQuery(this).parent();
jQuery(this).remove();
var text = parentObj.find("span").first().html();
parentObj.find("span").first().html(ta_capitalizeFirstLetter(text));
text = parentObj.find("span").last().html();
if ( endChars.indexOf(text.slice(-1)) == -1 )
{
parentObj.find("span").last().html(text+".");
}
});
var content = jQuery(this).parent().parent().find('.hello').text();
alert(content);
});
});
答案 0 :(得分:4)
获取新文本的代码应该移到fadeOut
回调中。完成动画并删除元素后,将更新父元素的innerText。此时,应从DOM中读取更新的内容。
// Cache the element
var $el = jQuery(this).parent().parent().find('.hello');
jQuery(this).fadeOut(function () {
jQuery(this).remove();
// Irrelevant code removed from here
...
var content = $el.text();
alert(content);
});
这是另一个简单的演示,其中包含最少的代码,有助于更好地理解代码。
答案 1 :(得分:1)
我尝试在chrome中调试你的jsfiddle,看起来代码的优先级是这样的:
声明此活动 - jQuery(this).fadeOut(function(){
获取div var content = jQuery(this).parent().parent().find('.hello').text();
的当前数据。
不加更改地提醒您的数据。
我认为你所要做的就是从你的匿名fadeout函数中调用你的警报和2
答案 2 :(得分:1)
只需将您的提醒置于回调中:
jQuery(this).fadeOut(function(){
var parentObj = jQuery(this).parent();
jQuery(this).remove();
var text = parentObj.find("span").first().html();
parentObj.find("span").first().html(ta_capitalizeFirstLetter(text));
text = parentObj.find("span").last().html();
if ( endChars.indexOf(text.slice(-1)) == -1 ) {
parentObj.find("span").last().html(text+".");
var content = parentObj.parent().find('.hello').text();
alert(content);
}
});