【问题标题】:Call to Javascript function with in dynamically created HTML <a> tag not working在动态创建的 HTML <a> 标记中调用 Javascript 函数不起作用
【发布时间】:2013-09-05 09:09:12
【问题描述】:

这似乎是一个简单的 javascript,但我觉得问这个问题很愚蠢.. 但我不知道为什么这不起作用。我有一种方法可以在页面上动态创建一些超链接。假设超链接以 url 作为参数调用可执行文件。因此,我使用 href 调用此函数,该函数具有调用可执行文件的代码。

非动态锚标记代码可以很好地启动一个 exe。

但是,我需要它来处理动态超链接。我试图简化问题并创建以下jsFiddle 来演示该问题。该链接没有调用我的方法。我错过了什么愚蠢的东西吗?我希望它在 IE 中工作。

我已经尝试了一些人发布的一些解决方案,他们说:我应该尝试href="#" onclick="myfunc();"。不知何故,这也不起作用。

这是我的代码:

function myfunc(url){
    alert(url);
};

function dynfunc(){
    var value = "This is a link";
    var url="http://www.google.com";
    var table = $("<table id='tab1'></table>");
    var row = $("<tr></tr>");
    var valueColumn = $("<td></td>");
    $('<a href="javascript: myfunc(\'' + url + '\');"></a>').html(value).appendTo(valueColumn);

    valueColumn.appendTo(row);
    row.appendTo(table);
    $("#div1").append(table);
};

dynfunc();

【问题讨论】:

  • 试试:$('&lt;a href=#/&gt;').click(function (e) { e.preventDefault(); myfunc(url) })
  • 您真的需要将链接放在表格中吗?重点是什么?我会在链接上创建一个click 函数。
  • 各位,感谢您的回复。关于表格,实际上这个例子只是我实际做的一小部分。所以是的,我需要桌子。
  • 我只想让 user2246674 知道你提供的解决方案一气呵成。

标签: javascript jquery html href


【解决方案1】:

假设你有这个 html :

<table id="dyn">
    <tbody>
    </tbody>
</table>

您可以只将此 JavaScript 用于动态添加的&lt;a/&gt;,这样您就可以添加一个点击处理程序而不是几个。

<script>
    $(function() {
        var tbl = $('#dyn'), tbody = tbl.find('tbody');

        var addLink = function(url, val) { 
            var tr = $('<tr/>'),
                td = $('<td/>').appendTo(tr),
                a = $('<a/>', {href: url}).html(val).appendTo(td);
        }

        tbl.on('click', 'a', function() {
            alert($(this).attr('href'));
        });

        //some ajax that calls addLink
    });
</script>

【讨论】:

    【解决方案2】:

    DEMO HERE

    更改此行:

     $('<a href="javascript: myfunc(\'' + url + '\');"></a>').html(value).appendTo(valueColumn);
    

    收件人:

     $('<a href="#"></a>').html(value).appendTo(valueColumn).click(function(){myfunc(url) });
    

    我们在append 之后将click 事件与您的&lt;a&gt; 相关联,并且每次点击都会调用myfunc(url)

    【讨论】:

    • 我检查过,它也很好用。我想知道 OneOfOne 的建议是否会更好?我知道拥有一个事件处理程序总是更好。
    猜你喜欢
    • 2012-10-12
    • 2018-03-02
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2018-02-27
    • 2011-02-16
    相关资源
    最近更新 更多