Получить атрибут Javascript - jQuery - PullRequest
0 голосов
/ 03 января 2012

У меня есть следующий HTML:

<label>
    <input type='checkbox' checked="checked" />
    CLICK ME....
</label>

и скрипт:

$(document).ready(function(){
    $("label").on("click",function(){
        if ($(this).children("input[type='checkbox']").is(':checked'))
        {
            //alert("checked");
           // return false;
        }
        else

        {
           // alert("not checked");
              // return false;        
        }
    });
});

Как я могу получить проверенное состояние? Если флажок установлен, я хочу выполнить другие операции другими способами.

Я использовал Live / On, потому что содержание добавляется динамически.

Пожалуйста, отметьте это jSfiddle

Ответы [ 6 ]

0 голосов
/ 03 января 2012
$("label").on("click",function(e){

    if($(this).find(":checkbox").prop("checked"))
    {
     alert("checked now...now make it unchecked");
       $(this) .children("input[type='checkbox']").prop("checked",false);
    }
    else{
    alert("not checked");
         $(this) .children("input[type='checkbox']").prop("checked",true);
    }
e.preventDefault();   

});

http://jsfiddle.net/5N7cW/21/

0 голосов
/ 03 января 2012

Пробовал это и работал (jQuery 1.7.1):

<label>
    <input type='checkbox' checked="checked" />
    CLICK ME....
</label>
<div id="result"></div>

$(document).ready(function(){
    $("label").live("click",function(){
        var elem = $(this).children("input[type='checkbox']");

        $('#result').html('prop: ' + elem.prop('checked'));
    });
});

jsFiddle: http://jsfiddle.net/tNGqs/

ОБНОВЛЕНИЕ: После ваших комментариев я создал второйjsfiddle: http://jsfiddle.net/8ByqX/

Как я понимаю, вы хотите избавиться от события срабатывания на дочернем элементе.Вы должны определить остановку распространения на элементе:

$(value).click(function(e) {
    e.stopPropagation();
});

Смотрите также комментарий Hello71 о принятом ответе здесь:

Как проверить наличие клика в родительском элементе, но не вребенок?

0 голосов
/ 03 января 2012

работает с последней версией jQuery v (1.7)

СОВЕТ: используйте атрибут for с умом .. см. for in label

HTML

<input type='checkbox' id="mycheckbox"/>
<label for="mycheckbox"> CLICK ME....</label> 

javascript

  $('input[type=checkbox]').on('click',function() {
        var checkboxStatus = $(this).prop('checked');
        alert(checkboxStatus);
        if(checkboxStatus)
        {
            alert('now checkbox is checked');
        } 
        else
        {
            alert('now checkbox is unchecked');
        } 
    });

working DEMO

0 голосов
/ 03 января 2012
     $("label").on("click",function(){

    $.each($(this).children("input[type='checkbox']"), function(index, value){

     if ($(value).is(':checked'))
            {
                //alert("checked");
               // return false;
            }else
            {
            }
    }) 
});
0 голосов
/ 03 января 2012

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

$(document).ready(function(){
    $("label").click(function(){
        if ($(this).children("input[type='checkbox']").prop("checked")
        {
            //alert("checked");
           // return false;
        }
        else

        {
           // alert("not checked");
              // return false;        
        }
    });
});
0 голосов
/ 03 января 2012

Нашли ваше решение:

HTML:

<label>
    <input type='checkbox' checked="checked" />
    CLICK ME....
</label>

JQuery:

$(document).ready(function(){
    $("label").change(function(){
        alert($(this).children("input[type='checkbox']").prop('checked'));
    });
});

оповещает о текущем состоянии.

рабочая демонстрация 3 с меткой в ​​качестве родителя ввода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...