1

我四处寻找我找不到这个问题的答案。在我的代码中,在 div 内部创建了一个链接,并赋予了 onclick 值以将参数传递给函数。我无法弄清楚为什么它不会触发。

var imgCount = 0;
var curImg;


function resetImg(target) {
alert(target);
}



$(".add").click(function () {
imgCount = imgCount + 1;
curImg = "theImg" + imgCount;


//Here we add the remove link
$('#links')
    .append('<a href="#" onclick="javascript:resetImg(\'' + curImg + '\');"  class="dynamic">Call Function</a>');
$('.dynamic').css('display', 'block');
});

这是小提琴:http: //jsfiddle.net/stewarjs/4UV7A/

我在创建链接时尝试过使用 .click() ,但是传递的参数需要对每个链接都是唯一的。我尝试获取 $(this).attr("id") 但值返回未定义。

感谢您的任何帮助。杰夫

4

3 回答 3

4

我建议您使用已有的 jQuery 方法,而不是尝试将 HTML 转换为 JavaScript。

 $('#links')
    .append($("<a>").attr('href', '#').on('click', function () { resetImg(curImg);
 }).addClass('dynamic').text('Call Function'));

http://jsfiddle.net/ExplosionPIlls/4UV7A/1/

于 2013-02-08T20:21:03.687 回答
1

从 onclick 中删除javascript:,它应该是这样的:onclick="resetImg(\'' + curImg + '\');"

于 2013-02-08T20:20:13.450 回答
0

总有办法摆脱onclick处理程序。这是我的做法:

var image_count = 0;

$('#links').on('click', '.dynamic', function(e) {
    e.preventDefault()

    alert($(this).data('image'));
});

$('.add').click(function () {
    $('<a />', {
        'href': '#',
        'data-image': 'theImg' + (++image_count),
        'class': 'dynamic',
        'text': 'Call function'
    }).appendTo('#links');
});

演示:http: //jsfiddle.net/4UV7A/4/

于 2013-02-08T20:22:24.613 回答