【问题标题】:Can't catch an element with find无法使用 find 捕获元素
【发布时间】:2013-02-27 08:58:59
【问题描述】:

我有这个 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();
}

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

【问题讨论】:

  • 可能是因为$(this) 的范围不正确。你传入obj,你的意思是打电话给parent(),而不是$(this)??
  • 问题是this没有意义,函数内部必须是var father_div = $(obj).parent();,否则不起作用。

标签: javascript jquery html object find


【解决方案1】:

你不需要双重$(..)

试试这个

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

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

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

函数中的this命名为obj ...

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      你也可以使用 jquery .closest(selector)

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-06
          • 2020-03-04
          • 2020-05-21
          • 1970-01-01
          • 2015-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多