jQuery this() 问题

标签 jquery

Fiddle

我一定是做了一些愚蠢的事情,但我真的不明白,为什么这个脚本不是console.log(ing) <p>中的文本标签?

HTML:

<div>
    <label>Display Name:</label>
    <div>
        <p>The room that its in.</p>
        <span class="edit"></span>
    </div>
</div>

jQuery:

if ($('span.edit').length > 0) {
    $(this).click(function(){
        var elem = $(this).prev();
        var text = elem.text();
        console.log(text);
        elem.html('<input type="text">' + text + '</input>');
    });
}

最佳答案

JavaScript 不是 block 作用域;您期望这个是什么?

已修复:

if ($('span.edit').length > 0) {
    $('span.edit').click(function(){
        var elem = $(this).prev();
        var text = elem.text();
        console.log(text);
        elem.html('<input type="text" value="' + text + '" />');
    });
}

编辑:更新了html()内容以纠正输入错误

关于jQuery this() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688335/

相关文章:

jquery - 想要将 Genemu FormBundle 自动完成与 querybuilder 一起使用

javascript - Ajax 按钮调用时书签计数仅更新一次

javascript - Flot Graph 与轴和工具提示不一致?

php - 保存到数据库的 jQuery Portlet

jquery - 如何在 jQuery 可调整大小插件中更改鼠标光标?

c# - 使用 ServiceStack 反序列化数组

javascript - 在javascript中添加正则表达式来确定url后面是否有任何字符/

javascript - 嵌入式谷歌地图在调整窗口大小之前不显示完整 map

javascript - 如何使用 Angular 从 json 制作 View (表单)?

javascript - 悬停切换时的 jQuery Animate 高度