如何从r.fn.init获取值(JQuery选择器上下文)

时间:2018-01-05 08:57:53

标签: javascript jquery

您好我尝试从这样的表格中获取一个值:

function getValueFromSibling(this) {
    var id = $(this).parent().siblings('span.childSibbling');
}

表格如下:

<tr>
    <td>
      <button type="button" onClick="getValueFromSibling()"></button>
    </td>
    <td>
      <span class="childSibbling">100</span>
    </td>
</tr>

但我收到这样的话:

id = r.fn.init [prevObject: r.fn.init(1)]

我发现这是一种简单的形式:

var jQuery = function( selector, context ){
   return new jQuery.fn.init( selector, context );
};

所以有问题。如何从InnerHTML接收<span>,或如何将r.fn.init [prevObject: r.fn.init(1)]转换为价值?

var result = id.val();和var result = id.get();无法正常工作

3 个答案:

答案 0 :(得分:4)

首先,函数this中的getValueFromSibling在调用函数时位于窗口范围传递this上下文中

 onClick="getValueFromSibling(this)"

除了text()之外,很少有东西可以找到你想要的文字。试试下面的一个

更好的方式(实际推荐方式):

HTML

<tr>
    <td>
      <button type="button" class="some-button"></button>
    </td>
    <td>
      <span class="sibbling">100</span>
    </td>
</tr>

Jquery的

$(function(){
  $('.some-button').click(function(){
      var id = $(this).closest('tr').find('.sibbling').text();
          // .closest() gets the closest tr parent .
          // .find() finds the element with class 'sibbling' inside that `tr`
          // .text() gets the text inside the element.
  });
});

答案 1 :(得分:1)

您应该可以使用

获取文本值
$("selector").text();

答案 2 :(得分:1)

你面临的问题是你不想要一个兄弟姐妹,你想要一个兄弟姐妹的孩子。

function getValueFromSibling(me) {
    var id = $(me).parent().next().find('span.childSibbling').text();
    console.log(id);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<table>
<tr>
    <td>
      <button type="button" onClick="getValueFromSibling(this)"></button>
    </td>
    <td>
      <span class="childSibbling">100</span>
    </td>
</tr>
</table>
</body>

有了这个,首先我们做.parent()来移动td元素。然后,我们使用td移动下一个.next()元素,最后使用span.childSibbling恢复find('span.childSibbling')。 使用方法.text()恢复节点的innerText.html()以获取节点的innerHTML。

对于r.fn.init问题,this questio n中有一个很好的答案。