2013-02-27 75 views
1

我有這個div:不能趕上與找到的元素

<div> 
    <label>Big Name 
     <span class="small">Suggestion text</span> 
    </label> 
    <input type="text" onfocus="getSuggestion(this);"> 
</div> 

我試圖做的是獲取與輸入焦點「getSuggestion()」函數「跨度」內的文本。

這裏是我的嘗試:

function getSuggestion(obj) { 
    var father_div = $(this).parent(); 

    var span = $(father_div).find("span").html(); 
} 

但它不工作。我究竟做錯了什麼?

+0

可能是因爲'$(this)'的範圍不正確。你傳遞'obj',你的意思是調用'parent()',而不是'$(this)'? – SpaceBison 2013-02-27 09:00:45

+0

問題在於'this'沒有意義,它必須是'var father_div = $(obj).parent();'在函數內部,否則它將不起作用。 – adeneo 2013-02-27 09:05:03

回答

3

你不需要雙$(..)

試試這個

var span = father_div.find("span").html(); 

function getSuggestion(obj) { 
    var father_div = $(obj).parent(); 

    var span = father_div.find("span").html(); 
} 

this的功能被命名爲obj ...

+0

謝謝!這工作。 – aur0n 2013-02-27 09:16:49

+0

welcom ..快樂的編碼 – bipen 2013-02-27 09:17:03

0

$(this)$(obj),也father_div本身是一個jQuery元素

function getSuggestion(obj) { 
    var father_div = $(obj).parent(); 
    var span = father_div.find("span").html(); 
} 
0

.html()不返回一個jQuery對象而是father_div的HTML內容。如果你華納裁判保存到其揮霍分割線:

function getSuggestion(obj) { 
    var father_div = $(obj).parent(); 
    var span = $(father_div).find("span") 
    span.html(); 
} 

和更聰明的人說,將其更改爲OBJ

0

您還可以使用jQuery的.closest(選擇)

var span = $(this).closest('span').html();