jQuery .live函数问题

时间:2011-03-01 10:45:01

标签: jquery

我有一个元素在页面加载时通过jquery添加一个属性。该属性称为jcarouselindex。我需要在文档加载时获取此属性的值。

我有选择器,如果没有动态添加,可以这样做:

id = jQuery('#gallery-carousel li.selected').attr("jcarouselindex");

但是由于它是动态添加的,因此id的值是未定义的。我想我需要使用.live()有没有人知道如何获得这个属性的值呢?

4 个答案:

答案 0 :(得分:2)

上面的代码应该可行。 .live()用于不同的目的。我想你可能会在动态添加之前尝试访问attr。尝试使用setTimeout调用此函数,这将确保所有现有代码都被执行。

setTimeout(function(){
    id = jQuery('#gallery-carousel li.selected').attr("jcarouselindex");
}, 0);

我假设您的代码已经在$(function(){})中;块。

答案 1 :(得分:0)

Live应该用于将事件处理程序绑定到绑定时页面上不存在的元素。

我认为您需要查看页面上的执行时间。您的选择器包含li上的“选定”类,因此我假设事件必须触发添加所选类。添加jcarouselindex属性值后会发生此事件吗?如果是这样,那么你应该在选择事件发生时捕获这个值。

不幸的是,您没有给我们提供太多细节,所以更多信息可以帮助我们为您提供更多帮助。

答案 2 :(得分:0)

live不是为了这个,而是为了事件处理程序。您必须在设置属性后运行该代码,因此请尝试使用:

$.ready(function(){
  id = jQuery('#gallery-carousel li.selected').attr("jcarouselindex");
});

答案 3 :(得分:0)

正在使用jcarousel插件吗?

如果是这样,您可以在初始化轮播时使用回调:

$('#gallery-carousel').jcarousel({
    initCallback: function () {
        var id = $('#gallery-carousel li.selected').attr("jcarouselindex");
        // do something with id
    }
});

通过这种方式,您可以确保在执行代码之前已经初始化了旋转木马。

请参阅:http://sorgalla.com/projects/jcarousel/了解更多详情。