访问jquery里面的内部'this'

时间:2013-01-24 22:11:50

标签: javascript jquery popover

基本上我有一个拖放应用程序,并希望在事情落实到位时在某些元素上设置引导弹出窗口。这是我到目前为止设置它(之后我激活.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当前正在修改?

2 个答案:

答案 0 :(得分: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
});

答案 1 :(得分:1)

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