animateDiv(div) {
.....
}
这个函数有效,但是当我试图像这样传递参数时,它就会工作,即。
$activeToggle.toggle("slow", function(){
$(this).find(".anime_yellow").each(function (i,e){
console.log(e.id); // this prints simple
animateDiv(simple); // this works
animateDiv(e.id); //this deosnt work but it prints 'simple'
});
当我将硬核值传递给它工作的函数,即animateDiv(simple)
时,如果我尝试放置一个包含相同内容的变量,那么它就会工作animateDiv(e.id)
,谢谢
完整代码在这里:http://jsfiddle.net/Fwhtv/22/
答案 0 :(得分:4)
您的animateDiv
假设您将传入一个对象。请注意以下几行:
function animateDiv(div){
var text = $('#' + div.id).text(); //div is assumed to be a div element
如果您想传递id
,则必须将其更改为:
function animateDiv(divId){
var text = $('#' + divId).text();
当然也更新了对div.id
的其他引用。
答案 1 :(得分:1)
来自你的jsfiddle:
function animateDiv(div){
var text = $('#' + div.id).text();
var doAnimate = function() {
$('span.' + div.id).each(function() {
var that = $(this);
setTimeout(function() {
that.animate({ fontSize: "90px" }, 1500 )
.animate({ fontSize: "50px" }, 1500 );
},that.index()*100);
});
}
您正在传递ID,但在函数中您期望元素。
答案 2 :(得分:0)
$activeToggle.toggle("slow", function(){
$(this).find(".anime_yellow").each(function (i,e){
console.log(e.id); // this prints simple
animateDiv(simple); // this works
animateDiv(e.id); //this deosnt work but it prints 'simple'
});
在函数(i,e)中,e是元素。
<span id="simple" class="anime_yellow">
要获取ID,您需要使用$(e).attr('id');
animateDiv($(e).attr('id'));
当前您将参数作为对象传递。如果传递对象的id(span),则需要更改span的id,如下所示。
function animateDiv(div){
// var text = $('#' + div.id).text();
var text = $('#' + div).text();
var doAnimate = function() {
// $('span.' + div.id).each(function() {
$('span.' + div).each(function() {
var that = $(this);
setTimeout(function() {
that.animate({ fontSize: "90px" }, 1500 )
.animate({ fontSize: "50px" }, 1500 );
},that.index()*100);
});
}