2

我在一个函数中有这个:

$('#users').append($("<div id='usuarios'>").text(mensaje[1][i]));

我想为这个新的<div>. 我怎样才能做到这一点?我在函数之外尝试这样:

$(document).ready(function(){
$('#usuarios').click(function() {
        alert("click");
    });
});

但它不起作用。

4

5 回答 5

7

对于 jQuery 1.7+,您可以使用.on()将事件处理程序附加到父元素

$(document).ready(function(){
  $('body').on('click', '#usuarios', function() {
     alert("click");
  });
});

甚至更好:

$(document).ready(function(){
  $('#users').on('click', '#usuarios', function() {
     alert("click");
  });
});
于 2013-01-08T03:45:32.687 回答
5

你可以内联(通过链接.appendafter .text),因为这正是 jQuery 的 API 的工作方式,但你也可以将它放在一个看起来更好的变量中:

var usarios = $("<div id='usuarios'>").text(mensaje[1][i]);

usarios.click(function() {
    alert('click');
});

$('#users').append(usarios);
于 2013-01-08T03:45:14.863 回答
3

我也遇到过这个问题,如果你把它放在 document.ready 里面就行不通了。我认为这是我的语法,但事实并非如此。

使用

$(document).on('click', "input[id^='radiobox']", function () { 
    alert('hihi'); 
});

然后它工作

于 2013-11-08T11:47:58.920 回答
1

您正在动态创建一个元素,因此正常的事件处理程序将不起作用。您将不得不使用on()将事件处理程序附加到您的文档。

$(document).on('click', "#usuarios", function() {
    // do your job here
});
于 2013-01-08T03:51:15.903 回答
1

两种方式

1.jQuery 1.7+

$(document).ready(function(){
  $('body').on('click', '#usuarios', function() {
     alert("click");
  });
});

2.jQuery<1.7

$(document).ready(function(){
  $('body').delegate('#usuarios','click', function() {
     alert("click");
  });
});
于 2013-01-08T03:53:24.010 回答