2011-07-13 39 views
2

如何做同样的循环操作?谢谢。javascript重复动作

$('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); 

});

回答

3

在这种情况下,您可能希望使用活动处理程序。更改外:

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

要:

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

那你不担心增加新的单击处理您在$(curr).next('ul').html(...)

+0

谢谢你这么烂。 – njai

+0

这只有在新创建的元素与原始选择器完全匹配时才有效。它将适用于原始问题,但要记住它很好。 – beeglebug

0

更新HTML后试用移动功能逻辑的匿名函数和一个命名的函数。

所以不是:

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

你必须:

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

这样一来,在函数中,你可以再次调用该函数,或者在你的情况下,将其连接到另一个元素你刚刚创建。