2011-05-14 54 views
2

对不起,我是初学者,有人可以帮我吗?如何将jQuery变量传递给插件属性?

<script> 
var iW = $(document).width(); 

$(function() { 
//single book 
$('#mybook').booklet({ 
    next: '#custom-next',     
    prev: '#custom-prev', 
    keyboard: true, 
    width: return iW, // here is the problem! It doesn't work. 
    height: 200 

}); 

//multiple books with ID's 
$('#mybook1, #mybook2').booklet(); 

//multiple books with a class 
$('.mycustombooks').booklet(); 

}); 

</script> 
+1

“它不工作”是_not_错误描述。 – 2011-05-14 10:24:49

+0

@Tomalak:此话不假,@Max一般来说,当你发现自己写“这是行不通的,”最好停止并写上“我很期待____,而是____正在发生的事情。”虽然在这种特殊情况下,这是很容易分辨的问题是什么... – 2011-05-14 10:26:45

+0

@TJCrowder:是的,这不是最好的例子,但我虽然它可能值得一提的是一般规则。 – 2011-05-14 10:28:22

回答

4

return存在是不必要的。你只需要width: iW

这就是说,你还应该带上调用$(document).width()ready块内。

$(function() { 
    var iW = $(document).width(); 

    //single book 
    $('#mybook').booklet({ 
     next: '#custom-next', 
     prev: '#custom-prev', 
     keyboard: true, 
     width: iW, 
     height: 200 

    }); 

    //multiple books with ID's 
    $('#mybook1, #mybook2').booklet(); 

    //multiple books with a class 
    $('.mycustombooks').booklet(); 

}); 
+0

Thanx!很棒! – Max 2011-05-14 10:39:47

5

真的接近。只要沟return,例如:

$('#mybook').booklet({ 
    next: '#custom-next',     
    prev: '#custom-prev', 
    keyboard: true, 
    width: iW, // <=== Updated 
    height: 200 

}); 

将使用价值iW为你调用booklet的时间。

在对象文字中(即您传递到booklet函数中的{ ... }),属性初始值设定项很像赋值语句。在左边的:给出之前的属性名称(和不能是表达式),并且在:后右侧的位向为属性(和可以是表达  —一个简单的变量的比特名称,函数调用等)。

+0

Thanx!很棒! – Max 2011-05-14 10:38:53

1

如上所述,您不需要返回。

但是或者很多的插件将接受功能在需要的时候它们的参数来评估,所以你可以如

$('#mybook').booklet({ 
    next: '#custom-next', 
    prev: '#custom-prev', 
    keyboard: true, 
    width: function() { return $(document).width(); }, 
    height: 200 
}); 

我不知道这个插件,所以我不是100%确定它会支持它,但很多人都这么做。

相关问题