2016-01-12 2 views
1
<?php 
    while($query=mysql_fetch_assoc($select)){ 
     ?> 
     <tr><td><input type="checkbox" name="checkBoxMail" id="checkBoxMail" 
     value="<?php echo $query['id']; ?>" 
     userid="<?php echo $query['suserid']; ?>"></td> 

     </tr> 
     <?php 
    } 
    ?> 

Этот код создал несколько флажков на странице просмотра. Первая проверка возвращает только значение после того, что следующий флажок щелчок не работаетjquery checkbox не работает

$('#checkBoxMail').click(function(){ 

    alert("alert"); 
}); 
+0

Вы должны использовать привязку 'delegate'' event'. '$ ('# checkBoxMail'). click' не работает с динамически созданным' html'. Необходимо выполнить '$ (document) .on ('click', '. CheckBoxMail', function() { });' –

+0

вы используете checkBoxMail как ID, поэтому для нескольких одинаковых идентификаторов недопустимо. Для этого вам нужно изменить ID на class = 'checkBoxMail' и удалить идентификатор из входного тега $ ('. CheckBoxMail'). Click (function() { alert («alert»); }); –

ответ

0

Вы используете тот же идентификатор для всех флажок creted, либо использовать уникальный идентификатор для каждого чекбокса или использования класса. Ниже кода, где я использовал класс

<?php 
    while($query=mysql_fetch_assoc($select)){ 
     ?> 
     <tr><td><input type="checkbox" name="checkBoxMail" class="checkBoxMail" 
     value="<?php echo $query['id']; ?>" 
     userid="<?php echo $query['suserid']; ?>"></td> 

     </tr> 
     <?php 
    } 
    ?> 

JQuery:

$(document).on('click','.checkBoxMail', function(){ 
    alert("alert"); 
}); 
6

Там будет несколько флажков с таким же id, что неправильно. Попробуйте с class.

<input type="checkbox" name="checkBoxMail" class="checkBoxMail" 
value="<?php echo $query['id']; ?>" 
userid="<?php echo $query['suserid']; ?>"> 

И

$('.checkBoxMail').click(function(){ 
    alert("alert"); 
}); 

И если вы хотите получить доступ к значению атрибута или то просто делать -

$(this).val(); 
$(this).attr('userid'); 
+0

вам нужно обработать делегат cz checkbox, созданный по циклу, зависит от данных –

+0

Я очень сомневаюсь, что ваш '.щелчок 'будет работать в этом случае. –

+1

Я не вижу причин для этого не работать !!! –

0

Подари класс для всех и прочитать о делегированных обработчиков событий, которые помогли бы : http://api.jquery.com/on/

$(document).on("click",".classname",function(event){ 
    alert("hi"); 
}); 

Делегированные события имеют то преимущество, что они могут обрабатывать события от элементов-потомков, которые будут добавлены в документ позднее. По собиранию элемента, который гарантированно будет присутствовать во время прикреплён делегирован обработчик события, вы можете использовать делегированные события избежать необходимости часто подключать и отключать обработчик событий

3

Три примера того, как вы можете сделать это по ID:

Помните, что если вы создаете несколько полей флажков, не устанавливайте одинаковый идентификатор, укажите другой идентификатор для каждого из них или вы можете установить флажок по классу, изменив # на ., так как вы может использовать имя класса несколько раз.

Идентификатор должен быть уникальным

$(document).ready(function() 
 
{ 
 
    // By ID - ID has to be unique 
 
    $('#checkBoxMail').on("click", function() 
 
    { 
 
    alert("alert"); 
 
    }); 
 
    
 
    $('#checkBoxMail2').click(function() 
 
    { 
 
    alert("alert2"); 
 
    }); 
 
    
 
    $(document).on("click", "#checkBoxMail3", function() 
 
    { 
 
    alert("alert3"); 
 
    }); 
 
    
 
    // By classname 
 
    $('.checkBoxMail5').on("click", function() 
 
    { 
 
    alert("alert"); 
 
    }); 
 
    
 
    $('.checkBoxMail5').click(function() 
 
    { 
 
    alert("alert2"); 
 
    }); 
 
    
 
    $(document).on("click", ".checkBoxMail5", function() 
 
    { 
 
    alert("alert3"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
Divs with unique ID 
 
<hr> 
 
<div id="checkBoxMail">CLICK ME</div> 
 
<div id="checkBoxMail2">CLICK ME</div> 
 
<div id="checkBoxMail3">CLICK ME</div> 
 

 

 
<br> 
 
Div with classname 
 
<hr> 
 
<div class="checkBoxMail5">CLICK ME</div>

+1

id должен быть unqiue. вы не можете работать с одним и тем же id разным временем. это динамический dom, поэтому вам нужно делегировать ваш первый два пути, не получится. –

+0

Но нужно установить флажок не по всей таблице –

+0

@AnikIslamAbhi - я изменил свой ответ, чтобы сказать о ID –

0
$('#checkBoxMail').is(':checked'){ 
    alert("alert"); 
}); 

Попробуйте это. Наслаждайтесь!

+0

Это неполное (это только часть условного) и недопустимый javascript. – moopet

+0

или он может использовать 'document.getElementById ('checkBoxMail'). Checked' Он тоже будет работать. – nerdyDev

+0

Это половина условного и половины обратного вызова. – moopet

0
$(document).ready(function() { 

    $('#checkBoxMail').click(function() { 

    alert("click event fired")}); 

}); 

<input type="checkbox" name="checkBoxMail" id="checkBoxMail" /> 
Смежные вопросы