通过它的类部件字符串选择前一个元素

时间:2014-01-28 08:43:31

标签: jquery

我有以下HTML:

<div id="divAreaId_1" class="SuppAreaParentDiv">
       <input type="hidden" value="3" class="hdnMaxSelection_1" id="hdnMaxSelection_1">

       <input type="checkbox" id="SuppItemId_2" class="chkSuppItem"> <br /> 
       <input type="checkbox" id="SuppItemId_3" class="chkSuppItem"> <br /> 
       <input type="checkbox" id="SuppItemId_4" class="chkSuppItem"> <br />
       <input type="checkbox" id="SuppItemId_5" class="chkSuppItem"> <br />

我正在努力获取输入:隐藏&#39;检查任何复选框时的值!我需要通过输入:隐藏&#39;部分班级名称:

$(".chkSuppItem").click(function () {
   var hdnMaxSelection = $(this).prev("[class*='hdnMaxSelection_']").val();
   alert(hdnMaxSelection); // I am getting here 'undefined'.

2 个答案:

答案 0 :(得分:1)

您必须在此上下文中使用.siblings()。因为.prev()只会查找具有所提供约束的前一个兄弟姐妹。

尝试,

$(".chkSuppItem").click(function () {
   var hdnMaxSelection = $(this).siblings("[class*='hdnMaxSelection_']").val();
   alert(hdnMaxSelection); 
});

或者您可以尝试.prevAll(selector)

$(".chkSuppItem").click(function () {
   var hdnMaxSelection = $(this).prevAll("[class*='hdnMaxSelection_']").first().val();
   alert(hdnMaxSelection); 
});

<强> DEMO for .prevAall()

答案 1 :(得分:1)

您可以使用 siblings()

var hdnMaxSelection = $(this).siblings("[class*='hdnMaxSelection_']").val();

目前,您的选择器仅针对第一个复选框进行更正,因为隐藏的输入是第一个复选框的前一个兄弟元素。

使用siblings(),只要您的隐藏输入是您的复选框的兄弟,那么它就能正常工作。

<强> Fiddle Demo