使用JQuery

时间:2016-04-26 18:33:38

标签: javascript jquery html

我在这里发现了这个问题Use JQuery to build an anchor,用JQuery动态构建锚。

我想知道如何将onclick事件添加到我的超链接中?

我一直在努力做到这一点,但没有任何反应。永远不会添加onclick事件。

function init(){
   var btnSave = "<a id=\"btnSave\">Save</a> "
   $(btnSave).on("click", {Arg1 : "1", Arg2: "2"}, save)
   var div = $("#myDiv");
   div.html(btnSave);
}

function save(e){
   var data = e.data;
   var arg1 = data.Arg1;
   var arg2 = data.Arg2;
   //...
}

我知道我可以像这样“嵌入”onclick:

   var btnSave = "<a id=\"btnSave\" onclick=\"" + ... + "\">Save</a> "

但是我想做的方式,在我看来看起来更干净。我接受另一种清洁选择。感谢。

我的函数save计划多次重复使用,其他超链接参数是不同的。

更新

根据建议我将其更改为此,但仍然看不到添加到我的HTML元素的onclick。

function init(){
   var btnSave = $("<a id='btnSave'></a>").html("Save").on("click", {Arg1 : "1", Arg2: "2"}, save);
   $("#myDiv").html(btnSave);
}

在Google Chrome控制台中,我测试了btnSave的值,控制台会记录此

"<a id="btnSave">Save</a>"

2 个答案:

答案 0 :(得分:0)

这行代码:

div.html(btnSave);

......等同于:

div.html("<a id=\"btnSave\">Save</a> ");

使用以下代码创建的锚点基本上已丢失,因为它从未附加到DOM:

$(btnSave).on("click", {Arg1 : "1", Arg2: "2"}, save);

相反,您可以将该锚存储在一个新变量中,您可以将其放入DIV:

function init(){
  var btnSave = "<a id=\"btnSave\">Save</a> ",
      anchor = $(btnSave).on("click", {Arg1 : "1", Arg2: "2"}, save);

  var div = $("#myDiv");
  div.html(anchor);
}

或更简单:

function init(){
  var anchor= $('<a id="btnSave">Save</a> ')
                .on('click', {Arg1 : '1', Arg2: '2'}, save)

  $('#myDiv').html(anchor);
}

答案 1 :(得分:0)

如果你知道export default Ember.Component.extend({ mycontroller: Ember.inject.controller('mycontroller'), funcUsingControllerToSendAction(args){ let mycontroller = this.get('mycontroller'); mycontroller.send('myaction',args); } }); 或元素的选择器,则在添加元素时不需要添加任何事件。您只需将以下内容添加到JS代码中即可:

id

这适用于所有动态添加的元素。

小提琴:https://jsfiddle.net/2nqobhea/1/