2011-06-23 28 views
2

我有这样的HTMLjQuery点击输入和函数?

<div class="someclass">     
    <input id="special" type="submit" value="Post"/>          
</div> 

而且我很困惑,我怎么可以运行jQuery的点击和运行一个功能?即这工作

<div class="someclass">     
    <input id="special" type="submit" value="Post" onclick="specialFunction();"/>          
</div> 

但是,这不?

jQuery('#special').click(function() { 
    specialFunction(); 
}); 

任何想法?

+0

可能是因为你没有把该代码'ready'事件处理中:http://api.jquery.com/ready/。它的工作原理:http://jsfiddle.net/fkling/E8nhw/我建议你阅读一个教程:http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery –

回答

0

试试这个:

$(document).ready(function() { 
    jQuery('#special').click(function() { 
     specialFunction(); 
     return false; 
    }); 
}); 

,但我建议你使用实时指令,以适用于将来可能出现的任何链接,这样做:

$(document).ready(function() { 
    $('#special').live("click", function() { 
     specialFunction(); 
     return false; 
    }); 
}); 
+0

总是只有**一个**元素有一定的ID。使用'live'在这里没有意义。这不是一种普遍的补救措施。 –

+0

因为这个原因,你失去了我一直喜欢utulizzare的课程,当然你可能会做一个特殊的课程! :D – JellyBelly

+0

谢谢:)这似乎工作。 – Tom

1

将此代码return false;块添加到onclick属性值的末尾。

发生了,因为你按钮提交表单通过点击。

并使用$(document).ready();

2

Jquery的需要一些时间来加载。因此,一旦DOM准备就绪,您需要使用jQuery的ready()方法加载eventlisteners。

第二个想法是你使用提交按钮。您需要取消其自然行为,否则浏览器将执行js操作并提交表单。

你的js代码应该像这样工作:

$(document).ready(function() { 
    $('#special').click(function() { specialFunction(); });  
}); 

考虑使用,而不是输入按钮标签类型提交,或添加“返回false;”取消浏览器的自然行为。

最好的问候,保罗

+0

这不是因为jQuery需要时间加载。这是因为如果代码位于'head'中,那么DOM尚未构建。但是,如果将代码放在加载jQuery的'script'标记之后,那么jQuery是绝对可用的。 –

1

你需要确保你连接的情况下,当元素是文件准备就绪且可用。将事件绑定脚本放在文档中的元素之后,或者在文档上使用事件并将事件绑定到内部(首选)。

jQuery(document).ready(function() { 
    jQuery('#special').click(specialFunction); 
}): 

如果您打算在未提交的情况下处理表单,则需要阻止默认的浏览器操作。通过jQuery实现的正确方法是使用preventDefault()事件方法。

jQuery(document).ready(function() { 
    jQuery('#special').click(function(event) { 
     event.preventDefault(); 
     specialFunction(); 
    }); 
}): 
0
$("#special").click(function(e) { 
    e.preventDefault(); 
    specialFunction(); 
});