希望我正确地写这个......
我试图在jquery函数中传递元素id作为选项:
$('.carousel').createcarousel({
theid: $(this).attr('id'), // this is the part I am trying to get working
delay: 150,
fade:300,
slide: 700,
effect:'slide',
orientation:'horizontal',
loop: false,
autoplay: false });
在函数本身中,选项定义为o
,因此我可以执行以下操作:
alert(o.fade);
它将显示一条显示“300”的警报。但是,如果我这样做:
alert(o.theid);
它说未定义。为什么呢?
答案 0 :(得分:2)
this
不是您对象中的对象。我想你的.carousel
类每个都有一个我想要将它分配给theid参数。但是,在您创建上下文的对象(this
参数)与您的jQuery元素不匹配时,它与您创建caruses的函数匹配。因此,您正在创建的jQUery对象包含一个空的HTML元素并且没有id。因此它设置为undefined。
我认为这将完成你想要做的事情:
$('.carousel').each(function() {
$(this).createcarousel({
//theid: $(this).attr('id'),
theid: this.id, //thanks jtheman
delay: 150,
fade:300,
slide: 700,
effect:'slide',
orientation:'horizontal',
loop: false,
autoplay: false });
});
这将迭代您的所有轮播类,正确设置this
上下文并应用createcarousel
函数。
答案 1 :(得分:0)
theid: $(this).attr('id')
在此上下文中,$(this)引用的轮播对象不是html对象。
查看jquery apply函数。您可以指定函数调用的上下文
滚动到“上下文,调用并应用”
希望这会有所帮助
考虑到你对另一个答案的评论:
你不需要传递id!试试这个:
$(".carousel").click(function(event){
alert(event.target.attr("id"));
});
event.target表示单击的html对象
这应该可以解决