在DOM树上获取对象的text()? - Jquery

时间:2012-01-28 02:34:14

标签: jquery select onchange

我有这个标记(删除了所有不必要的信息)

<li>
<a></a>
<strong class="listingAmount">1</strong> 
<strong class="listingPrice">10</strong> 
<form class="marketListing">
<select>
</select>
<input />
</form>
</li>

我正在尝试在jquery中的选择框的.listingAmount上获取.listingPricechange event的值。我尝试了很多涉及.parent().prev().closest()和其他很多方法的方法,但似乎无法得到它!

到目前为止我的jquery,

$('.marketListing select').change(function() {
    var price = $(this).parent().prev('.listingPrice').text();
    var amount = $(this).parent().prev('listingAmount').text();
    alert(price);
    alert(amount);
});

如何获取select之前的所需值?

由于

4 个答案:

答案 0 :(得分:2)

您要查找的功能是prevAll而不是prevprev函数仅搜索前一个节点,而prevAll将搜索所有先前的节点。这是一个功能齐全的小提琴

小提琴:http://jsfiddle.net/UasBq/

$('.marketListing select').change(function() {
    var price = $(this).parent().prevAll('.listingPrice').text();
    var amount = $(this).parent().prevAll('.listingAmount').text();
    alert(price);
    alert(amount);
});

答案 1 :(得分:0)

我可能会在<li>上放一个课程,以便我有一个已知且容易找到的容器,然后你去<li>然后回来找你对此感兴趣:

<ul>
    <li class="container">
        <!-- ... -->
    </li>
</ul>

然后closestfind的简单组合让您想要:

$('select').change(function() {
    var $cont  = $(this).closest('.container');
    var amount = $cont.find('.listingAmount').text();
    var price  = $cont.find('.listingPrice').text();
    // ...
});

演示:http://jsfiddle.net/ambiguous/kAejF/

这比尝试使用prevprevAll更有利于你的jQuery与你的HTML非常松散地结合:你只需要简单的包含,嵌套和内部结构是无关紧要的。

答案 2 :(得分:0)

我认为你很亲密:

$('.marketListing select').change(function() {
  var li = $(this).closest('li');

  var price = $('.listingPrice', li).text();
  var amount = $('.listingAmount', li).text();
  alert(price);
  alert(amount);
});

答案 3 :(得分:0)

我认为你做的事情如下:

$('.marketListing select').change(function() {
  var price = $(this).parents('form').prevAll('.listingPrice:first').text();
  var amount = $(this).parents('form').prevAll('.listingAmount:first').text();
  ...
  ...
});

这将从select中找到第一个父FORM元素。然后它会扫描所有以前的兄弟姐妹并找到第一个.listingPrice(和.listingAmount)。

我使用:首先是因为有多个.listingPrice类是表单的兄弟。我没有添加:首先是父母('form'),因为如果你有嵌套的表单元素,你会遇到更大的问题:P