2015-08-13 4 views
0

У меня есть цикл в стиле Java, который на домашней странице содержит список с текстом и флажками. Поэтому у меня есть набор флажков. Мне нужно показать сообщение, когда я нажимаю на ЛЮБОЙ флажок, но в моем варианте сообщения отображаются только тогда, когда я нажимаю первый флажок.jQuery элементы в цикле

Мой флажок в цикле

<c:forEach items="${sessionScope.flights}" var="flight"> 
    <input type="checkbox" class="deleteBox"/> 
</c:forEach> 

Мой сценарий

$(".deleteBox").change(function(){ 
     $("#deletePanel").each(function(index, element){ 
      if($(".deleteBox").prop("checked")){ 
       console.log("true"); 
       $("#deletePanel").css("display","inline"); 
      }else{ 
       $("#deletePanel").css("display","none"); 
       console.log("false"); 
      } 
     }); 
    }); 

ДИВ Сообщение

<div id="deletePanel" style="display: none">Delete selected</div> 
+0

'$ (" # deletePanel "). Each (' Мы можем перебирать один элемент? Показать отображаемый HTML. Было бы полезно ответить на ваш вопрос –

+0

, а также убедиться, что у вас нет элементов более одного, если вы используете id 'deletePanel'. – Jai

ответ

2

Попробуйте это:

$(".deleteBox").change(function(){ 
    // use $(this) to check state of current changed checkbox 
    if($(this).prop("checked")){ 
     console.log("true"); 
     $("#deletePanel").css("display","inline"); 
    }else{ 
     $("#deletePanel").css("display","none"); 
     console.log("false"); 
    } 
}); 

Как только один #deletePanel, вам не нужно каждую функцию - просто проверить, если удаление флажок на изменения и показать сообщение, если оно

Update

в соответствии с комментарием я хотел бы сделать это следующим образом:

$(".deleteBox").change(function(){ 
    if($(".deleteBox:checked").length){ 
    console.log("true"); 
    $("#deletePanel").css("display","inline"); 
    }else{ 
    $("#deletePanel").css("display","none"); 
    console.log("false"); 
    } 
}); 
+0

есть одна проблема: когда у вас мало проверенных, и вы сняли флажок, одно сообщение не отображается. –

+0

См. Править выше, он должен проверить, сколько флажков отмечено, а затем показать/скрыть сообщение – Pete

+1

Большое спасибо) –

2

Вы можете использовать .toggle():

$(".deleteBox").change(function(){ 
    $("#deletePanel").toggle(this.checked); 
}); 
+0

toggle установит свойства отображения 'block' и' none'. не 'inline' и' none' –

+0

@RajaprabhuAravindasamy, это правда. Но я не уверен, знает ли OP, что div является элементом уровня блока. – Jai

Смежные вопросы