在OnClick中使用函数的jQuery引用问题

时间:2013-04-04 19:30:30

标签: javascript jquery

这是我的代码:

jQuery("#"+code+"_2").after("<a href='#' id='"+code+"_3' onclick='addfunction('"+code+"', event); return true;'><img src='special.gif' border='0'></a>");

我在addfunction上遇到语法错误(。代码是一个字符串,我尝试将其包装在引号中,但它不起作用。有什么想法吗?

UPDATE ---这可行,但不会在函数中传递代码和事件。

function addfunction() {
alert("THIS WORKS");
}
var myAnchor = $('<a href="#" id="' + code + '_3"><img src="special.gif" border="0"></a>').bind('click', addfunction);
$('#' + code + '_2').after(myAnchor);

4 个答案:

答案 0 :(得分:1)

你需要逃避内在的单引号:

jQuery("#"+code+"_2").after("<a href='#' id='"+code+"_3' onclick='addfunction(\'"+code+"\', event); return true;'><img src='special.gif' border='0'></a>");

答案 1 :(得分:1)

为了理智,请尝试重新组织代码:

var insertLink = function(code) {
   var parent = jQuery('#' + code + '_2');
   var a = $('<a/>', {
       href: '#',
       id: code + '_3'
   }).html('<img src='special.gif' border='0'>').on('click', function() {
      addfunction(code, event);
      return true;
   });
}

我没有测试过代码,但你明白了。

答案 2 :(得分:1)

这个有效!尽量避免onclick事件,改为使用on()。

首先创建锚点,将click事件绑定到它,然后追加到DOM。

function addfunction(code, event) {
    alert("THIS WORKS, the code is: " + code);
}
var myAnchor = $('<a href="#" id="' + code + '_3"><img src="special.gif" border="0"></a>').bind('click', function(event) {
    addfunction(code, event);
});
$('#' + code + '_2').after(myAnchor);

答案 3 :(得分:0)

你问题在这里addfunction('"+code+"', event)你需要逃避onnClick值中的单引号

jQuery("#"+code+"_2").after("<a href='#' id='"+code+"_3' onclick='addfunction(\'"+code+"\', event); return true;'><img src='special.gif' border='0'></a>");