0

Under a for loop , i am constructing div this way , adding dynamic content whereever applicable .

<div data-role="collapsible">
    <h3>Popcorn</h3>
    <div class="prd-items-detials">
        <ul>
            <li class="head">
                <form>
                    <input type="checkbox" class="checkboxclas" name="checkbox-mini-0" id="checkbox-mini-0" data-mini="true">
                    <label class="testtt" for="checkbox-mini-0">Small Pack 150g</label>
                </form>
            </li>
            <li class="prd-items-qt">
                <div class="col">
                    <i class="minus"></i>
                    <i class="qt">12</i>
                    <i class="plus"></i>
                </div>
                <div class="col">

                </div>
                <div class="col">
                    Rs: 150/-
                </div>
            </li>
        </ul>

    </div>
</div>

Actual code

for (var k = 0; k < responseinner[i].type.length; k++) 
{
activateUiHTML.append('<div  data-role="collapsible"><h3>' + obj.name + '</h3><div class="prd-items-detials"><ul><li class="head"><form><input type="checkbox" class="checkboxclas" name="checkbox-mini-0" id="' + random_number + '" data-mini="true"><label class="testtt" for="checkbox-mini-0">' + responseinner[i].type[k] + '</label></form></li><li class="prd-items-qt"><div class="col"><i class="minus"></i><i class="qt">1</i><i class="plus"></i></div><div class="col"></div><div id ="'+responseinner[i].type[k]+'" class="col">Rs: ' + responseinner[i].price[k] + '/-</div></li></ul></div></div>');
}

When i registered with the checkbox event this way , i was getting multiple values on click of checkbox . (I mean the text present for other checkboxes also present in for loop )

$(document).on("click", ".checkboxclas", function (e) {
if($(this).is(':checked'))
{      
var labelAttr = $('label').text();
alert(labelAttr);
}
}

How to return only that particular text of checkbox ??

2 Answers2

0

You have to get its parent form element using closest() and the get the label using find() like this:

$(document).on("click", ".checkboxclas", function (e) {
if($(this).is(':checked'))
{      
var labelAttr = $(this).closest("form").find("label.testtt").text();
alert(labelAttr);
}
}
Ehsan Sajjad
  • 61,834
  • 16
  • 105
  • 160
0

Try this :

$(document).on("click", ".checkboxclas", function (e) {
    if($(this).is(':checked')) {
        var labelAttr = $('label[for='+$(this).attr('name')+']').text();
        alert(labelAttr);
    }
});
Tanatos
  • 1,857
  • 1
  • 13
  • 12