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

Har*_*rry 2 jquery coffeescript

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

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢

Rob*_*b W 5

=>变化thisthis父背景:

$(".add-row-item").live "click", =>
    f = $(this)
Run Code Online (Sandbox Code Playgroud)

编译成

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

->相反,请使用,不会修改this.

  • 一个78.3 k的声誉家伙没有说任何关于live()的事情是非常不寻常的 (5认同)
  • @Ankit"使用`$(document).on('click','.add-row-item',function(){...});`而不是`.live`,因为弃用的blabla - 请参阅docs for [`.对()`](http://api.jquery.com/on/)".我回答了这个问题,这是关于Coffeescript语法,而不是jQuery. (5认同)