在页面加载时触发jquery事件函数

时间:2010-05-04 13:12:58

标签: jquery

这是一个小jQuery函数,当点击一个复选框时,它可以完成我想要的工作,但我知道的基本差距是:

如何注册这个以便它处理页面加载时已经点击的复选框?

编辑:很抱歉,对于那些已经回答过这个问题的人,但我已经对此进行了编辑以使其更加清晰)

$(document).ready(function() {
  $('fieldset input:checkbox').click(function() {
    if ($(this).attr('name') == 'foo') {
      if ($(this).attr('checked')) {
        // hide checkbox 'bar'
      }
      else {
        // show checkbox 'bar'
      }
    }
  }
});

如果我使用.trigger('click'),它会点击(或取消忽略)页面加载时的所有框。

我可以想到一些方法来执行此操作,这将涉及重复部分代码,但我只知道jQuery已经有一个优雅的答案...

3 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
   $('fieldset input:checkbox').click(handleClick)
     .filter(':checked').each(handleClick);
});

function handleClick(){
    if ($(this).attr('name') == 'foo') {
      // hide checkbox 'bar'
    }
    else {
      // show checkbox 'bar'
    }
}

您可能需要在handleClick函数中添加一些逻辑,以确保您知道复选框的状态。您可以通过调用$(this).is(':checked');

来执行此操作

答案 1 :(得分:1)

您可以将该代码放入函数中并立即调用该函数。

例如:

function handleCheckbox() {
    if ($(this).attr('name') == 'foo') {
      // hide checkbox 'bar'
    }
    else {
      // show checkbox 'bar'
    }
}

$(function() {
    $('fieldset :checkbox').each(handleCheckbox).click(handleCheckbox);
});

答案 2 :(得分:0)

像这样?

$(function() {
  $('fieldset input:checkbox').click(function() {
    if ($(this).attr('name') == 'foo') {
      // hide checkbox 'bar'
    }
    else {
      // show checkbox 'bar'
    }
  }).filter(":checked").click();
})

在看到另一个答案后,我不认为以上是你想要的。给另一个人+1。

: - )