2013-01-24 21 views
0

基本上我有一個拖放應用程序,並且想要在某些元素放置到位時在某些元素上設置引導popover。這是我迄今爲止設置它(之後我主動的.popover):訪問一個jQuery內部的'this'發現

  $(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" 
      }) 

然而,$(本)。html的()是在整個DIV拉(像它應該)但是我想要的佔位符只是該特定.simple-editable類中的內容。所以我的基本問題是,雖然使用.find()有沒有辦法訪問變量jquery當前正在修改?

回答

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" 
}); 

更一般地,當你要訪問「本」是一個範圍內的情況下重新分配「這個」關鍵字,緩存對它的引用,像這樣:

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

謝謝!這非常有幫助 – Msencenb

1

我不這麼認爲。您需要緩存查找查詢,然後應用該元素的.html()