jquery $(document).live函数实现

时间:2011-11-28 18:54:18

标签: jquery document live

我有这段代码

$(document).ready(function () {
    $(".rating-stars").ratingbig({
        callback: function (value, link) {
            var element = $(this).parent().parent().parent().attr('id').split("_");
            var tip = $('#rating-result_' + element[1]);
            tip[0].data = value;
            $('#rating-result_' + element[1]).html(ratingMnemos[tip[0].data] || ratingMnemos[0]);
        },
        focus: function (value, link) {
            var element = $(this).parent().parent().parent().attr('id').split("_");
            var tip = $('#rating-result_' + element[1]);
            tip.html(ratingMnemos[value]);
        },
        blur: function (value, link) {
            var element = $(this).parent().parent().parent().attr('id').split("_");
            var tip = $('#rating-result_' + element[1]);
            tip[0].data = value;
            $('#rating-result_' + element[1]).html(ratingMnemos[tip[0].data] || ratingMnemos[0]);
        }
    });
});

我通过ajax将一些代码添加到页面中。 nu评级不适用于页面中新添加的元素。我被卡住了,因为当在页面中添加新元素时,我找不到触发函数的方法。

提前致谢

1 个答案:

答案 0 :(得分:1)

我相信您的问题是在初始函数调用后向页面添加类rating-stars的新项目时该怎么做。

在初始页面加载后,您提供的代码只运行一次。 在向页面添加新项目之后,您必须调用类似的,以便将其应用于这些新项目。例如,在AJAX回调期间。

示例:

$.ajax({
  // Omitted actual call
  success: function(){
    // Omitted additional callback actions
    applyRatingBig();
  }
});

$(document).ready(function () {
  applyRatingBig();
});

function applyRatingBig() {
// Consider adding code to ensure that this only gets called once per object - for example, you could set a flag once it has been called for a given object

$(".rating-stars").ratingbig({
    callback: function (value, link) {
        var element = $(this).parent().parent().parent().attr('id').split("_");
        var tip = $('#rating-result_' + element[1]);
        tip[0].data = value;
        $('#rating-result_' + element[1]).html(ratingMnemos[tip[0].data] || ratingMnemos[0]);
    },
    focus: function (value, link) {
        var element = $(this).parent().parent().parent().attr('id').split("_");
        var tip = $('#rating-result_' + element[1]);
        tip.html(ratingMnemos[value]);
    },
    blur: function (value, link) {
        var element = $(this).parent().parent().parent().attr('id').split("_");
        var tip = $('#rating-result_' + element[1]);
        tip[0].data = value;
        $('#rating-result_' + element[1]).html(ratingMnemos[tip[0].data] || ratingMnemos[0]);
    }
});
}