jQuery:将元素ID作为函数的一部分传递

时间:2012-12-07 23:43:55

标签: jquery function

希望我正确地写这个......

我试图在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);

它说未定义。为什么呢?

2 个答案:

答案 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函数。您可以指定函数调用的上下文

http://api.jquery.com/Types/?rdfrom=http%3A%2F%2Fdocs.jquery.com%2Fmw%2Findex.php%3Ftitle%3DTypes%26redirect%3Dno#Context.2C_Call_and_Apply

滚动到“上下文,调用并应用”

希望这会有所帮助


考虑到你对另一个答案的评论:

你不需要传递id!试试这个:

$(".carousel").click(function(event){ 
    alert(event.target.attr("id")); 
}); 

event.target表示单击的html对象

这应该可以解决