对没有事件的特定类的已加载元素执行Fire函数

时间:2013-12-05 00:28:05

标签: javascript jquery

我使用数据属性和类名的组合来触发一个函数来修改具有特定类名的元素的内容。

下面的函数触发$(document).ready

$('.accessControlled').each(function(){
        var accessLevel = parseInt($(this).attr("data-accesslevel"));
        if((user.role !== 0) && (accessLevel !== role)){
            $(this).remove();
        } else {
            $(this).removeAttr('data-accesslevel');
            $(this).removeClass('accessControlled');
        }
    });

现在我想在ajax调用返回的元素上触发此函数。 我知道我可以通过jquery on(),live(),delegate()等永久地绑定函数,但是要使用哪个事件以及如何使用它?

3 个答案:

答案 0 :(得分:0)

只需针对返回的代码执行上面的代码:

例如:

function doit(obj){
    $(obj).each( // rest of your function
}

// ...

$.get(...).done(function(data){
    var obj = $(data);
    doit(obj);
    // rest of your injection
}

答案 1 :(得分:0)

试试这个:

// obviously user.role and role must be defined for this to work
function access(){
  $('.accessControlled').each(function(){
    var accessLevel = parseInt($(this).attr("data-accesslevel"));
    if((user.role !== 0) && (accessLevel !== role)){
      $(this).remove();
    }
    else{
      $(this).removeAttr('data-accesslevel');
      $(this).removeClass('accessControlled');
    }
  });
}

// assign each ajax call to a variable
var ajx1 = $.post({/*object stuff here*/});

// put the ajax variables in an Array
var ajxA = [ajx1, ajx2, ajx3, ajx4, ajx5, ajx6, ajx7];
$.each(ajxA, function(i, v){
  v.done(access);
});

答案 2 :(得分:0)

jQuery中有一个函数ajaxSuccess,可用于在所有ajax调用之后执行某些操作。

 $(document).ajaxSuccess(function() {
                accessControl.checkAccessControl();
    });