2012-07-16 62 views
0

我有下面的HTML和JQuery代码,我需要一些帮助来做到以下几点,我有一些单选按钮与货运类型,当用户选择其中一个我需要得到它的价格,在类别price。我试过使用.closest()但我得到和空结果(JQuery v1.7.2)。任何人都可以帮我解决这个问题吗?从特定类的跨度获取文本

HTML

<div class="freight"> 
    <input type="radio" name="freight-type" id="FX" value="FX" /> 
    <label for="FX"> 
     <span class="blue">Fedex</span>- 
     <strong>US$ <span class="price">12.42</span> </strong> 
     <span class="small-text"> (Delivery time: <strong>3 business days)</strong></span> 
    </label> 
</div> 

JQuery的

$("input[name=freight-type]").change(function() { 

    alert($(this).closest(".price").text()) 

}); 
+3

因为'.closest()'上升DOM树。 '.price'是单选按钮下的一个级别。 – 2012-07-16 20:01:34

+0

@AndrewPeacock,谢谢,我没有注意这个细节!随着迈克的回答,我得到了我所需要的。 – 2012-07-16 20:08:49

回答

1
最接近

()上升通过DOM树,所以它会开始寻找在div.fregith,然后从那里上去DOM树。

试试这个作为你的选择:

$(this).next('label').find('.price') 
+1

请注意,这将更精确的是由Mike提出的方法(该方法工作正常)。这只会开始搜索以兄弟标签元素开始的价格类别。因此,如果您可能在货运部门中有多个价格类别元素,则可能需要使用它来获取下一个价格元素,而不是所有价格元素。 – 2012-07-16 20:13:01

+0

你的解决方案似乎更精确 – 2012-07-16 20:15:19

+0

谢谢,我使用你的建议! – 2012-07-16 20:29:09

1

试试这个:

$("input[name=freight-type]").change(function() { 
    alert($(this).parent().find(".price:first").text()) 
}); 
+0

它也给我带来了一个空的结果,也许是因为你没有使用'.parent()',我说得对吗? – 2012-07-16 20:11:06

+0

Whups!是的,修正了这一点。 – 2012-07-16 20:14:08

2

http://jsfiddle.net/4AEyp/

一个例子

$("input[name='freight-type']").change(function() { 
    alert($(this).parent().find('.price').text()); 
});​ 
+1

这可能会带回一批类似的分类元素。 – 2012-07-16 20:09:16