2012-12-18 161 views
1

我需要在加载页面时触发jQuery的.on()事件。我有一些动态生成的复选框,基于上一个屏幕上的用户选择。我有代码,做我想要的,但我已经绑定到'身体'点击事件,让我测试它的作品。当页面加载时触发jQuery的.on()事件

我的是以下内容,只要页面加载而不是点击主体就需要触发。你

$('body').on('click', function (e) { 
    $("input:checkbox").each(function() { 
     if ($(this).attr("disabled") == "disabled") { 
      $(this).parent().addClass('disabled'); 
     } 
    }); 
}); 

回答

0

两种可能性:

1)只要把你的脚本标签包含的代码在页面的最末端,刚刚闭幕</body>标记之前,并从事件处理程序中删除:

<script> 
$("input:checkbox").each(function() { 
    if ($(this).attr("disabled") == "disabled") { 
     $(this).parent().addClass('disabled'); 
    } 
}); 
</script> 
</body> 

上述所有定义的复选框的HTML代码将可在这一点上,引用:


2)或者,如果你有一些理由把script标签的其他地方,你可以使用jQuery's ready event,该页面后触发准备就绪,但前onload(通常情况下):

jQuery(function($) { 
    $("input:checkbox").each(function() { 
     if ($(this).attr("disabled") == "disabled") { 
      $(this).parent().addClass('disabled'); 
     } 
    }); 
}); 
+0

嗨,这两个都不适合我。我已经在文档中做好了准备,但是由于输入是使用jQuery动态创建的,所以DOM不会看到它们,除非我使用.on(),而我可以访问但需要触发事件(如点击,焦点)。 – KDee

+1

@KDee:如果您要动态添加它们,请在添加它们之后运行相关的代码。例如,一旦你创建了一个新的,并且假设你有一个名为'newItem'的jQuery包装器,它引用了包含复选框的元素:'if(newItem.find(“input:checkbox [disabled = disabled] “)[0]){newItem.addClass(”disabled“); }'which says“如果'newItem'中有任何禁用的复选框,则将''disabled''类添加到'newItem'。 –

+0

我会接受你的答案,因为它可以通过在点上分配类来帮助解决我的问题如果我发现任何东西,我会继续探索并发布一个解决方案 – KDee

1
jQuery(document).ready(function($) { 
    $("input:checkbox").each(function() { 
     if ($(this).attr("disabled") == "disabled") { 
      $(this).parent().addClass('disabled'); 
     } 
    }); 
}); 

document.ready处理函数使页面完成加载时激活该函数。

+0

我确实已经在document.ready中使用了它,但由于控件是动态生成的,因此不起作用。使用.on允许我访问这些控件,但我需要一个事件来触发它。 – KDee

+0

jQuery(document).ready(function($){ //这里是您的.on处理程序代码 }); – Houssni

相关问题