0

基本上,我有一个拖放应用程序,并希望在放置到位时在某些元素上设置引导弹出框。这是我到目前为止设置的内容(之后我激活了.popover):

            $(this).find(".simple-editable").attr({
                "rel":"popover",
                "data-html":"true",
                "data-content":"<div class='simple-edit-box'><form>" +
                    "<input type='text' placeholder='" + $(this).html() + "'>" +
                    "<button type='save' class='btn-success'>Save</button> </form></div>",
                "data-placement":"top"
            })

然而 $(this).html() 正在拉入整个 DIV(就像它应该的那样),但我想要的占位符只是那个特定的 .simple-editable 类中的内容。所以我的基本问题是,在使用 .find() 时,有没有办法访问 jquery 当前正在修改的变量?

4

2 回答 2

3
var simpleEditable = $(this).find(".simple-editable");
simpleEditable.attr({
    "rel":"popover",
    "data-html":"true",
    "data-content":"<div class='simple-edit-box'><form>" +
    "<input type='text' placeholder='" + simpleEditable.html() + "'>" +
        "<button type='save' class='btn-success'>Save</button> </form></div>",
    "data-placement":"top"
});

更一般地说,在您想要在重新分配“this”关键字的范围内访问“this”的情况下,缓存对它的引用,如下所示:

var self = $(this);
self.find(".simple-editable").attr({
   // in here, self.find(".simple-editable") works 
   // whereas $(this).find(".simple-editable") will return an empty array
});
于 2013-01-24T22:14:05.803 回答
1

我不相信。您需要缓存 find 查询,然后应用该元素的.html().

于 2013-01-24T22:14:08.987 回答