JQuery如果class是活动的if语句

时间:2015-12-16 12:56:15

标签: jquery ipad

我目前正在研究这个问题,但它没有完全正常工作,可能是其他声明? 基本上,如果.grey-square处于活动状态,则将隐藏输入字段的值设置为“true”,如果代码中未激活/取消隐藏,则将值设置为空。 我有大量的q因此长列表但我不确定这是正确的吗?

<input type="text" class="answerStored hidden" name="q1" id="q1">

<script>
$(function() {
$('.one').bind('click', function() {
    if($(this).hasClass('grey-square')) {
        $("#q1").attr("value", true);
    }
    else {
        $("#q1").attr("value", '');
    }
});
$('.two').bind('click', function() {
    if($(this).hasClass('grey-square')) {
        $("#q2").attr("value", true);
    }
    else {
        $("#q2").attr("value", '');
    }
});
$('.three').bind('click', function() {
    if($(this).hasClass('grey-square')) {
        $("#q3").attr("value", true);
    }
    else {
        $("#q3").attr("value", '');
    }
});
});
</script>

3 个答案:

答案 0 :(得分:1)

您应该使用.on而不是.bind,因为“.bind”只是“.on”的内部映射,可能会在其他jquery版本中删除。要读取/设置值,应使用“.val(value)”函数正确设置值。最后但并非最不重要的是,您正在为问题分配一个“隐藏”类,因此在“else”情况下,您需要删除隐藏的类,或者只需调用“.show()”

此外,尽量避免重复代码。检查你是否可以使它更通用并更新你的html结构,所以点击“.one”javascript可以找到相应的“q1”,或者如果这不可能,添加一个函数,只需调用函数“

function checkHiddenValue(triggerElement, targetElement) {
    if($(triggerElement).hasClass('grey-square')) {
            $(targetElement).val(true);
        }
        else {
            $(targetElement).val('');
        }
    }
}

$('.one').on('click', function() {
    checkHiddenValue(this, '#q1'));
});

答案 1 :(得分:0)

您可以将其简化为:

<button class='one' data-id="q1">One</button>
<button class='two' data-id="q2">One</button>
<button class='three' data-id="q3">One</button>
......

您需要在点击的项目上设置data-*属性,上面的内容只是演示如何操作。

$('.one, .two, .three').on('click', function() {
  var hasGrey = $(this).hasClass('grey-square'),
    target = $(this).data('id');
  $("#" + target).attr("value", hasGrey ? 'true' : '');
});

示例演示:

 $('.one, .two, .three').on('click', function() {
   var hasGrey = $(this).hasClass('grey-square'),
     target = $(this).data('id');
   $("#" + target).attr('value', hasGrey ? 'true' : '');

 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='q1' name='q1' >
<input type='text' id='q2' name='q2'>
<input type='text' id='q3' name='q3'><br>
<button class='one grey-square' data-id="q1">One</button>
<button class='two grey-square' data-id="q2">Two</button>
<button class='three grey-square' data-id="q3">Three</button>

答案 2 :(得分:-2)

你写了这个:

$("#q1").attr("value", true);

试试这个:

$("#q1").attr("value", "true");