1

我有这个 div:

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

我想要做的是在输入焦点上使用“getSuggestion()”函数获取“span”内的文本。

这是我尝试过的:

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

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

但它不起作用。我究竟做错了什么?

4

4 回答 4

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...

于 2013-02-27T09:00:23.833 回答
0

$(this)应该是$(obj)并且father_div本身也是一个 jQuery 元素

function getSuggestion(obj) {
    var father_div = $(obj).parent();
    var span = father_div.find("span").html();
}
于 2013-02-27T09:01:31.917 回答
0

.html()返回 jquery 对象,而是返回father_div 的 html 内容。如果您想将参考保存到它,则必须拆分行:

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

正如更聪明的人所说,将其更改为 obj

于 2013-02-27T09:02:46.457 回答
0

您还可以使用 jquery .closest(selector)

var span = $(this).closest('span').html();
于 2013-02-27T09:05:28.793 回答