单击事件(如果选中了元素并重新加载页面)

时间:2019-02-15 14:16:29

标签: if-statement click reload checked

仅当选中复选框时,我才希望reload.location点击事件。对我来说,这似乎是基本条件,但没有用。也许需要其他方法?我发现,勾选复选框时,<input type="checkbox">元素中没有html更改。也许这是原因,或者不可能将这些条件组合在一起? else语句是对上一个UI页面的调用。在下面的尝试中,它跳过了if语句。

我的尝试

$(document.body).on("click", "#button", function(){
        if (document.getElementById('checkbox').checked) {

                location.reload(true);

        } else {

        return_to_page( this.dataset.return )

        }
    });

以上操作正常,但是由于缺少preventDefault:而被忽略

$(document.body).on("click", "#button", function(e){
    e.preventDefault();

    //etc

});

2 个答案:

答案 0 :(得分:1)

checked不是jQuery对象的属性。您可以使用prop()来获取属性

$('#button').click( function() {
  if ($('#checkbox').prop('checked')) {
    location.reload(true);
  }

  // alternative #1 - use the 'checked' property of the Element in the jQuery object:
  if ($('#checkbox')[0].checked) {
    location.reload(true);
  }

  // alternative #2 - use the 'checked' property of the Element outside of jQuery:
  if (document.getElementById('checkbox').checked) {
    location.reload(true);
  }
});

这是一个可行的示例:

$('#button').click(function() {
  if ($('#checkbox').prop('checked')) {
    // location.reload(true);
    console.log('Reload would happen now...');
  } else {
    console.log('Staying on the current page');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>
  <input type="checkbox" id="checkbox" /> 
  Reload?
</label>
<button id="button">Go</button>

答案 1 :(得分:0)

$('#button').click( function() {
    if( $("input[id='checkbox']:checked") ) {
        location.reload(true);
    }
});

替代

$('#button').click( function() {
    if( $('#checkbox').is(':checked') ) {
        location.reload(true);
    }
});

所有合一板的方法:

$('#checkbox').is(":checked")

$('#checkbox').prop('checked')

$('#checkbox')[0].checked

$('#checkbox').get(0).checked