我有一个函数调用SwapOnscreenPhotos。以下是该功能的来源:
function SwapOnscreenPhotos(currentPhotoSet, arrowClicked)
{
$("#photo-list img").each(function(index)
{
$(this).attr("src", photoData[currentPhotoSet][index].url);
if (photoData[currentPhotoSet][index].liked === true)
{
$(this).addClass("liked");
}
else
{
$(this).removeClass("liked");
}
});
//Animate the old photos off of the screen
$("#match").hide("slide", { direction: "left" }, 1000);
}
我做了一些随机的事情,然后在函数的最后,我想无条件地在#match上调用一个效果。没有事件我想要执行此效果(如果重要,事件确定我是否首先调用SwapOnScreenPhotos)。我该如何执行此效果?
修改
对不起,让我澄清一下自己。我得到的印象是每个jQuery表达式都遵循类似的公式。 $('selector').event(function() { //function stuff});
我的代码$("#match").hide("slide", { direction: "left" }, 1000);
与此示例有很大差异。我的代码更类似于以下模型:$('selector').function
。请注意,没有任何事件指示何时应执行代码以及何时不应执行代码。有没有办法在没有这个事件的情况下调用jQuery函数?当我尝试运行上面的代码时,我收到了这个错误:
未捕获TypeError:对象#的属性'#'不是函数jquery.js:8780 Tween.run jquery.js:8780 tick jquery.js:8491 jQuery.fx.timer jquery.js:9032 动画jquery.js:8555 jQuery.fn.extend.animate.doAnimation jquery.js:8871 jQuery.extend.dequeue jquery.js:1894 jQuery.fn.extend.queue jquery.js:1937 jQuery.extend.each jquery.js:611 jQuery.fn.jQuery.each jquery.js:241 jQuery.fn.extend.queue jquery.js:1930 jQuery.fn.extend.animate jquery.js:8881 jQuery.each.jQuery.fn。(匿名函数)jquery.js:8853 AnimateMatch match.js:21 SwapOnscreenPhotos match.js:70 $ .ajax.success match.js:167 jQuery.Callbacks.fire jquery.js:974 jQuery.Callbacks.self.fireWith jquery.js:1082 完成jquery.js:7650 jQuery.ajaxTransport.send.callback
我认为此错误是由于我未能指定事件引起的。这更有意义吗? 谢谢
答案 0 :(得分:2)
我得到的印象是每个jQuery表达式都遵循类似的公式。 $('selector')。event(function(){// function stuff});
不是不是这样。并非一切都是对事件的反应。你可以打电话:
$("#match").hide("slide", { direction: "left" }, 1000);
在DOM准备就绪后,您可以随时执行操作,并对所选元素执行操作。
您可能会遇到错误,因为您在DOM准备好之前尝试使用jQuery元素选择。这就是为什么你通常包装需要在onReady附件中选择元素的任何东西。这样,在解析DOM并且可以使用之前,js不会执行。
$(function(){
// this will execute as soon as the DOM is ready
$("#match").hide("slide", { direction: "left" }, 1000);
});
onReady与onLoad类似,但之前发生过因为onLoad等待加载外部资源(如图像),一旦加载DOM就会发生onReady。
答案 1 :(得分:1)
您正在尝试使用JQuery UI hide
;如果尚未加载JQuery UI库,那么这是您收到的错误消息,而您正在使用plain JQuery。
例如,如果我使用Firebug在此(Stack Overflow)页面上运行您的代码,那么我会收到相同的错误。
$("body").hide("slide", { direction: "left" });
TypeError:对象#的属性'#'不是函数
总而言之,您尝试调用该函数的方式并没有错。我认为问题在于你忽略了包含JQuery UI库,或者它没有正确加载。