对于1.7,不赞成直播活动 - 我使用当前的1.11.1 jquery版本。 现在,同样在文档上说,对于1.9 jquery来说,直播被删除了 - 很好。 对于下一个案例
<script type="text/javascript">
$(document).ready()
{
$("#submitFile").live('click', function (e) {
alert('button clicked');
e.preventDefault();
alert(1);
});
$('#fileCtrl').live('change', function (event) {
alert(1);
});
<!-- this was a typo from-->
$('#fileCtrl').live('on', function (event) {
alert(1);
});
}
</script>
<div id="uploadDiv">
<input name="import" value="import" type="file" id="fileCtrl" />
<input type="submit" value="export" id="fileupload" />
</div>
对于我目前的项目,我不得不重新使用直播。 &#34; on&#34;事件简单不会发生。 有什么理由吗? 我尝试使用live并且它工作,它在doc上说它在1.9版本上删除了。 对此有何提示?为什么现场仍在工作?为什么&#34; on&#34;没有按&#39;吨?
提前致谢。
答案 0 :(得分:4)
您需要重新排列调用堆栈。这意味着,您需要定位能够捕获所需的所有click
事件的父节点,并将其绑定为
$('the_parent_node_probably_document_body').on('click', '#submitFile', function( e ) {
});
说到这一点,从ID选择器委托任何事件并没有多大意义,因为它只会在你的标记中出现一次,你实际上想要委派来自许多节点的事件。所以我现在很困惑。
答案 1 :(得分:0)
元素没有&#39; on&#39;事件
$('#fileCtrl').live('change', function (event) {
alert(1);
});
$('#fileCtrl').live('on', function (event) {
alert(1);
});
当您的代码发生变化时,您的代码意味着同样的反应。或者&#39; on&#39;事件被解雇。可能是你搞砸了&#39;改变&#39; &#39; on&#39;?
的活动答案 2 :(得分:0)
on是一个函数,而不是DOM事件。该活动仍然被称为“改变”:
$('#fileCtrl').on('change', function (event) {
alert(1);
});
答案 3 :(得分:0)
如简单示例所示,您不必费心使用live
或on
(您的第三个示例似乎是错误的,因为没有on
事件。{{1是一个jQuery方法)。您的DOM就绪处理程序中也缺少on
和右括号。
e.g。使用普通function
并更改click
:
methods
请注意,此版本的最后一个示例无效,因此我将其排除在外。
如果您确实想要使用$(document).ready(function()
{
$("#submitFile").click(function (e) {
alert('button clicked');
e.preventDefault();
alert(1);
});
$('#fileCtrl').change(function (event) {
alert(1);
});
});
,则新语法将为:
on
最后,如果元素被动态添加到页面中,请使用委托的事件处理程序,连接到不变的祖先(文档是默认的):
$(document).ready(function()
{
$("#submitFile").on('click', function (e) {
alert('button clicked');
e.preventDefault();
alert(1);
});
$('#fileCtrl').on('change', function (event) {
alert(1);
});
});
Re:DOM就绪处理程序。 DOM准备就绪的简洁快捷方式就是:
$(document).ready(function()
{
$(document).on('click', "#submitFile", function (e) {
alert('button clicked');
e.preventDefault();
alert(1);
});
$(document).on('change', '#fileCtrl', function (event) {
alert(1);
});
});
答案 4 :(得分:0)
我发现了我的错误!!!
它是关于文件准备的声明 - 我多么愚蠢!
$(document).ready()
{
无视 $(文件)。就绪(函数()
谢谢大家:)