2

当像这样动态地向 dom 添加元素时:

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

有人可以解释一下这种行为吗?如果在加载 dom 时元素确实存在,我该如何使用 $(this) ?

谢谢

4

1 回答 1

5

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

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

编译为

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

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

于 2013-04-16T07:51:53.927 回答