Javascript 附加后JS onClick不工作

Javascript 附加后JS onClick不工作,javascript,onclick,Javascript,Onclick,我有一些代码,在AJAX请求成功后附加了一个新的DIV。附加的div包含一个带有onclick的链接。但是它不起作用 附加链接的代码: <span class="boldheading_smaller" id="readreplytxt_'+ msgid +'" onclick="readoffer('+ msgid +')">Read More...</span>') 值得一提的是,我知道这不是jQuery的限制 正如您在中所看到的,使用html属性的onclick事

我有一些代码,在AJAX请求成功后附加了一个新的DIV。附加的div包含一个带有onclick的链接。但是它不起作用

附加链接的代码:

<span class="boldheading_smaller" id="readreplytxt_'+ msgid +'" onclick="readoffer('+ msgid +')">Read More...</span>')

值得一提的是,我知道这不是jQuery的限制

正如您在中所看到的,使用html属性的onclick事件绑定可以工作,而不管它们是在原始源代码中,还是像您在示例中所做的那样动态附加到jQuery中

在没有看到整个页面代码的情况下,很难进行进一步的调试,但是很可能您的追加逻辑出了问题。另外,在onclick属性中放置一个警报(
alert(msgid)
,而不是
readoffer(msgid)
),看看这是否有效-如果有效,则
readoffer
功能存在问题

最后—在附加新的HTML后,是否存在不使用jQuery绑定事件的原因?您可以使用类来标识按钮,并通过闭包访问msgid

简化示例:

function respondoffer(msgid) {
    $('#target')
        .append('<span class="readoffer">read more...</span>')
        .find('.readoffer').click(function() {
            readoffer(msgid);
        });
}
函数响应提供(msgid){
$(“#目标”)
.append('阅读更多…')
.find('.readoffer')。单击(函数(){
readoffer(msgid);
});
}

jQuery DataTable也可能存在范围界定问题。我刚刚遇到了一个问题,我遇到了类似的问题:

<script>
function foo() {
    alert("Squeek");
}

$(function () {
    window.MyDataTable = $('#MyDataTable').dataTable();
    window.MyDataTable.fnAddData(["foo", "<span onclick='foo()'>SQUEEK</span>"]);
});
</script>

然后它成功了。

请发布一个完整的代码示例。我认为您的ajax响应是文本而不是DOM。这就是为什么onclick事件不起作用。你是如何附加它的?整个附加有点大-我认为你正确地认为响应是文本而不是DOM。这有什么好办法吗?发布了整个函数。请不要在web开发问题中使用
IE
而不是
。警报是一个好主意-它可以工作并显示正确的值,这意味着它在readoffer函数中。@Steve\M如果我的答案解决了您的问题,您已经继续,如果您可以将其标记为正确(如果示例回答了您的问题“但是,我如何将msgid值传递给JS”;,甚至可以向上投票),以便其他人知道,这将是非常好的。干杯
<script>
function foo() {
    alert("Squeek");
}

$(function () {
    window.MyDataTable = $('#MyDataTable').dataTable();
    window.MyDataTable.fnAddData(["foo", "<span onclick='foo()'>SQUEEK</span>"]);
});
</script>
<script>
function foo() {
    alert("Squeek");
}
window.foo = foo;

$(function () {
    window.MyDataTable = $('#MyDataTable').dataTable();
    window.MyDataTable.fnAddData(["foo", "<span onclick='window.foo()'>SQUEEK</span>"]);
});
</script>