动态添加元素 - 使用$(this)

时间:2013-04-16 07:50:13

标签: coffeescript jquery

在动态添加元素时,如下所示:

row = """
    <div class="ipad-row">
        <h3>Sample Row</h3>
        <div id="wrapper-placeholder">

            <div class="scrollView" style="">
                <a class="btn btn-primary add-row-item">Add an item</a>
            </div>
        </div>
    </div>
"""


$(".add-row").live "click", ->
    $(".ipad .body").append row
    false

为什么当我尝试从该行元素中的链接获取此内容时,我得到窗口:

$(".add-row-item").live "click", =>
    f = $ this
    console.log f // this logs window object, not the link element?
    f.parent().append row_item

有人可以解释一下这种行为以及如何使用$(this)就像你在装载dom时元素确实存在一样吗?

由于

1 个答案:

答案 0 :(得分:5)

=>this更改为父上下文中的this

$(".add-row-item").live "click", =>
    f = $(this)

编译到

var _this = this;
$(".add-row-item").live("click", function() {
    var f = $(_this);

改为使用->,不会修改this