2013-02-27 4 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

+0

Проблема в том, что 'this' не имеет значения, она должна быть' var father_div = $ (obj) .parent(); 'внутри функции, или она не будет работать. – adeneo

ответ

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

+0

welcom .. счастливое кодирование – bipen

0

$(this) должны быть $(obj), а также сам father_div является JQuery Элемент

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

.html() не возвращаем объект Jquery, а скорее содержание HTML в father_div. если вы WANNER сохранить реф к нему youhave разделить строки:

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();