在动态创建ID时无法使用jquery显示/隐藏div

时间:2016-07-08 11:36:24

标签: javascript jquery laravel-5.2

我正在使用jquery从数据库中获取数据,并希望将其用作多个div的ID。我能够从数据库中获取数据,然后使用循环也可以迭代数据。但是当我尝试在循环中使用.prop()时,它根本不起作用。当我尝试在控制台上记录值时,它是空的。以下是我的代码。请帮帮我。

$(document).ready(function () {
$.get('/getInfringementTypes', function(data)
{
    var parsed = JSON.parse(data);
    //I am getting the following data back from db
    // ["trademark", "copyright", "patent", "design", "other", "item-infringement"]
    var valueArray = [];
    $(parsed).each(function(index,value)
    {
        valueArray[index] = value;
    });
    var i = 0;

    for(i=0; i < valueArray.length; i++)
    {
        $('#'+ valueArray[i]).click(function() {
            if( $('#'+valueArray[i]).prop('checked',true)) {
                $('#'+valueArray[i]+'List').show('5000');
            }
        });
        console.log('#'+valueArray[i]+'List');
    }
    console.log(valueArray);
});
});

这是我的HTML代码:

<div class="row">
    <section>
        <b>Verify Violation *</b>
        <br> @foreach(getInfringementTypes() as $infringements_type)
        <input type="radio" name="groupVerify" value="{{$infringements_type->infringement_type}}" id="{{Str::slug($infringements_type->infringement_type)}}" />
        <label for="{{Str::slug($infringements_type->infringement_type)}}">
            {{$infringements_type->infringement_type}}
        </label>
        @endforeach
    </section>
    <br>
    <section id="subCode">
        <div id="trademarkList">
            <b>Sub Code *</b>
            <br> @foreach(getParentCodeFromDb('Trademark') as $subcode)
            <input type="radio" name="groupTrademark" value="{{$subcode}}" id="{{$subcode}}" />
            <label for="{{$subcode}}">
                {{$subcode}}
            </label>
            @endforeach
        </div>
        <div id="copyrightList">
            <b>Sub Code *</b>
            <br> @foreach(getParentCodeFromDb('Copyright') as $subcode)
            <input type="radio" name="groupCopyright" value="{{$subcode}}" id="{{$subcode}}" />
            <label for="{{$subcode}}">
                {{$subcode}}
            </label>
            @endforeach
        </div>
        <div id="patentList">
            <b>Sub Code *</b>
            <br> @foreach(getParentCodeFromDb('Patent') as $subcode)
            <input type="radio" name="sub_code" value="{{$subcode}}" id="{{$subcode}}" />
            <label for="{{$subcode}}">
                {{$subcode}}
            </label>
            @endforeach
        </div>
        <div id="designList">
            <b>Sub Code *</b>
            <br> @foreach(getParentCodeFromDb('Design') as $subcode)
            <input type="radio" name="sub_code" value="{{$subcode}}" id="{{$subcode}}" />
            <label for="{{$subcode}}">
                {{$subcode}}
            </label>
            @endforeach
        </div>
        <div id="otherList">
            <b>Sub Code *</b>
            <br> @foreach(getParentCodeFromDb('Other') as $subcode)
            <input type="radio" name="sub_code" value="{{$subcode}}" id="{{$subcode}}" />
            <label for="{{$subcode}}">
                {{$subcode}}
            </label>
            @endforeach
        </div>
        <div id="itemList">
            <b>Sub Code *</b>
            <br> @foreach(getParentCodeFromDb('Item infringement') as $subcode)
            <input type="radio" name="sub_code" value="{{$subcode}}" id="{{$subcode}}" />
            <label for="{{$subcode}}">
                {{$subcode}}
            </label>
            @endforeach
        </div>
    </section>
    <br> @if($filter['status'] == 'suspect')
    <section>
        <b>Product *</b>
        <br>
        <input name="groupProduct" type="radio" id="test1" />
        <label for="test1">Handbags-Rocco</label>
        <input name="groupProduct" type="radio" id="test2" />
        <label for="test2">Handbags-Brenda</label>
        <input name="groupProduct" type="radio" id="test3" />
        <label for="test3">Handbags-Dracy</label>
        <input name="groupProduct" type="radio" id="test4" />
        <label for="test4">Handbags-Donna Hobo</label>
        <input name="groupProduct" type="radio" id="test5" />
        <label for="test5">Handbags-Kristen</label>
        <input name="groupProduct" type="radio" id="test6" />
        <label for="test6">Apparel-Apparel</label>
        <input name="groupProduct" type="radio" id="test7" />
        <label for="test7">Footwear-Footwear</label>
        <input name="groupProduct" type="radio" id="test8" />
        <label for="test8">Other-Other</label>
    </section>
    @endif
</div>

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

$.each(parsed,function(i,v){
  if( $('#'+v).is(':checked')) {
      $('#'+v+'List').show('5000');
      $('div[id$=List]').not($('#'+v+'List')).hide();
  }
});

答案 1 :(得分:0)

如果您动态生成事件功能,则可以使用 on 方法,而不是直接在选择器上点击广告

$( '#'+ valueArray[i] ).on( "click", function() {
  console.log( $( this ).text() );
});