我希望能够在不重新加载页面的情况下多次运行此脚本。看过使用直播活动,但无法弄清楚。任何帮助将不胜感激。顺便说一下,我是菜鸟,我自己也没有写过这个剧本。
<script type="text/javascript">
var $elem = $('#wrapper');
$(document).ready(function(){
$("a#trigger").click(function(event){
event.preventDefault();
var full_url = this.href;
var parts = full_url.split("#");
var trgt = parts[1];
var target_offset = $("#"+trgt).offset();
var target_top = target_offset.top;
$('html, body').delay(2000).animate({scrollTop:target_top}, 2000).delay(250).queue(function() {
$('#arm').hide();
$('#arm').toggleClass('arm-down');
});
});
$(function(){
$('#arm').hide();
$('#arm').toggleClass('arm-down');
$('a#trigger').click(function() {
$('#trigger').addClass('active');
$('#arm').delay(500).slideToggle().delay(750).queue(function() {
$('#arm').toggleClass('arm-grab');
});
});
});
});
</script>
答案 0 :(得分:1)
让我们假设你不想多次设置点击处理程序。这只是留下了无用的功能。
步骤1.!匿名
将匿名函数更改为非匿名函数。
function blammo(triggeringEvent)
{
$('#arm').hide();
$('#arm').toggleClass('arm-down');
$('a#trigger').click(function()
{
$('#trigger').addClass('active');
$('#arm').delay(500).slideToggle().delay(750).queue(function()
{
$('#arm').toggleClass('arm-grab');
});
});
}
第2步。去blammo
使用非匿名函数并使用.on()
jQuery函数。
$(document).ready(function()
{
... blah ...
blammo(null); // instead of the anonymous function.
$(something).on("some event, maybe click", blammo);
}
答案 1 :(得分:1)
制作匿名函数:
function(event){
event.preventDefault();
var full_url = this.href;
var parts = full_url.split("#");
var trgt = parts[1];
var target_offset = $("#"+trgt).offset();
var target_top = target_offset.top;
$('html, body').delay(2000).animate({scrollTop:target_top}, 2000).delay(250).queue(function() {
$('#arm').hide();
$('#arm').toggleClass('arm-down');
});
});
$(function(){
$('#arm').hide();
$('#arm').toggleClass('arm-down');
$('a#trigger').click(function() {
$('#trigger').addClass('active');
$('#arm').delay(500).slideToggle().delay(750).queue(function() {
$('#arm').toggleClass('arm-grab');
});
});
});
}
进入一个函数
function yourFunction(event)
将你的onLoad减少到
$(document).ready(yourFunction)
现在您可以随时调用您的功能
<script>
//call your function
yourFunction(null)
</script>
答案 2 :(得分:0)
如果你想让任何一块js运行多次,把整个东西放在一个函数中,然后用setTimeOut()
来调用它自己。
答案 3 :(得分:0)
不知道这里发生了什么,但无论如何我都会尝试: - )
<script type="text/javascript">
$(function(){
$('#arm').hide().toggleClass('arm-down');
$('#trigger').on('click', function(event) {
event.preventDefault();
var hash = this.href.split("#"),
target_top = hash[1].offset().top;
$(this).addClass('active');
$('#arm').delay(500).slideToggle().delay(750).queue(function() {
$(this).toggleClass('arm-grab');
});
$('html, body').delay(2000).animate({scrollTop:target_top}, 2000).delay(250).queue(function() {
$('#arm').hide().toggleClass('arm-down');
});
});
});
</script>