2010-09-03 91 views
4

我正在通过jQuery的html()函数添加新元素。然后我想要处理它。是否有可能以你在这里看到的方式做到这一点?处理innerHTML或html()后的元素。 Javascript

$("#renamePlaylist").click(function(){ 
    var aa = '<input type="text" name="plst_name" value="'+$("#playlist_header").find("span").text()+'" size="'+Math.round($("#playlist_header").find("span").text().length/2)+'">'+ 
       '<input id="renameCurrent" type="image" name="+" value="submit" alt="+">'; 
    $("#playlist_header").find('span').html(aa);     
}); 

$("#renameCurrent").click(function(){ 
    alert('hello') 
}); 
+0

你试过了吗? – 2010-09-03 17:24:44

+0

是的:)不工作...... :( – Pol 2010-09-03 17:52:07

回答

1

您可以使用.live(),像这样:

$("#renameCurrent").live('click', function(){ 
    alert('hello') 
}); 

;或者执行绑定创建之后,像这样:

$("#renamePlaylist").click(function(){ 
    var aa = '<input type="text" name="plst_name" value="'+$("#playlist_header").find("span").text()+'" size="'+Math.round($("#playlist_header").find("span").text().length/2)+'">'+ 
      '<input id="renameCurrent" type="image" name="+" value="submit" alt="+">'; 
    $("#playlist_header").find('span').html(aa); 
    $("#renameCurrent").click(function(){ alert('hello'); }); 
}); 
1

您可以使用.delegate()处理元素被动态添加到#playlist_header容器中。

$("#playlist_header").delegate('#renameCurrent', 'click', function(){ 
    alert('hello'); 
}); 

或者只是在创建元素时添加.click()处理程序。

$("#renamePlaylist").click(function(){ 
    var $aa = $('<input type="text" name="plst_name" value="'+$("#playlist_header").find("span").text()+'" size="'+Math.round($("#playlist_header").find("span").text().length/2)+'">'+ 
      '<input id="renameCurrent" type="image" name="+" value="submit" alt="+">'); 
    $aa.filter('#renameCurrent').click(function() { 
      alert('hello'); 
    }); 
    $("#playlist_header span").html($aa); // Edit from @Nick's comment.   
}); 
+0

第二个版本会增加一个点击额外的元素:)也只是作为一个提示,'.html($ aa)'是一个快捷方式;) – 2010-09-03 17:29:44

+0

@Nick - 确实它会。固定。 :o)虽然,我认为'.html($ aa)'会导致'[object Object]'。编辑:不,我错了。 – user113716 2010-09-03 17:30:50