-1

我有这样的简单 html 创建:

$('#date_'+user_id).append('<input  type="text" size="20" id="date_new_'+user_id+'" value="'+dateStr+'"/>');

如您所见,id 是动态的,然后我尝试将函数绑定到其中,如下所示:

$('#date_new_'+user_id+"'").bind({
    click: function() {
    alert("do something on click");
     },
    mouseenter: function() {
    alert("do something on mouseenter"); 
}

});

再次如您所见,我正在使用动态 id(我创建的那个),但它给了我这样的错误:

Uncaught Error: Syntax error, unrecognized expression: #date_new_97' jquery-1.8.2.min.js:2
bc.error jquery-1.8.2.min.js:2
bh jquery-1.8.2.min.js:2
bp jquery-1.8.2.min.js:2
r.querySelectorAll.bp jquery-1.8.2.min.js:2
bc jquery-1.8.2.min.js:2
p.fn.extend.find jquery-1.8.2.min.js:2
p.fn.p.init jquery-1.8.2.min.js:2
p jquery-1.8.2.min.js:2
(anonymous function)
p.event.dispatch jquery-1.8.2.min.js:2
g.handle.h

我确实看到了通过 chrome 开发人员工具和 firebug 创建的文本元素

4

2 回答 2

1

$('#date_new_'+user_id+"'")是你的问题。

鉴于这种情况:

var user_id = 15;
var jquery_selector = '#date_new_'+user_id+"'";

jquery_selector现在#date_new_15'#date_new_15. 注意尾随的单引号。

将其更改为$('#date_new_'+user_id),它应该可以正常工作。

于 2012-11-25T21:11:59.090 回答
0

试试这个代码:

$('#date_new_'+user_id).bind({
    click: function() {
    alert("do something on click");
     },
    mouseenter: function() {
    alert("do something on mouseenter"); 
});

但是如果您动态添加输入,我建议您使用以下代码:

$(document).on('click','#date_new_'+user_id, function() {
    alert("do something on click");
     } 
});
$(document).on('mouseenter','#date_new_'+user_id, function() {
    alert("do something on mouseenter");
     } 
});
于 2012-11-25T21:12:52.110 回答