javascript重复动作

时间:2011-07-13 07:14:28

标签: javascript jquery

如何做同样的循环动作?谢谢。

$('a.level').click(function() {
var level   = $(this).parent('li').attr("class");
var nxvl    = parseInt(level)+1;
var dir     = $(this).html();

var curr    = $(this);

var data = new Object();
    data.n      = new Date().getTime();
    data.act    = "getdirectory";
    data.level  = level;
    data.direct = dir;

var str = $.toJSON(data); 
$.post('ajax.php', { str: str }, function(result){
    var data = eval('('+obj.data+')');
    var html = [];
    $.each(data, function(key, value) {
        html[key] = "<li class='"+nxvl+"'><a href='javascript:void(0);' title='' class='level'>"+eval(value)+"</a><ul></ul></li>";
    });

    $(curr).next('ul').html(html.join(""));
    $('a.level').click(function() {

        // do the same action
    }

});
return(false);

});

2 个答案:

答案 0 :(得分:3)

在这种情况下,您可能希望使用实时处理程序。改变你的外表:

$('a.level').click(function() {
  ...
}

要:

$('a.level').live('click', function() {
  ...
}

然后,在$(curr).next('ul').html(...)

更新HTML后,您不必担心添加新的点击处理程序

答案 1 :(得分:0)

尝试将函数逻辑移出匿名函数并进入命名函数。

所以而不是:

$('element').click(function(){ /* logic */ });

你会:

function myFunc() { /* logic */ }
$('element').click(myFunc);

这样,在函数中你可以再次调用函数,或者在你的情况下,将它附加到你刚刚创建的另一个元素。