jQuery:将表单转换为AJAX按钮

时间:2016-09-26 04:01:52

标签: javascript jquery html ajax

我正在写一个网站。糟糕的是我用JavaScript编写了它,所以一切都是基于AJAX的,并且该站点不适用于禁用JavaScript的浏览器。

现在我试图通过给出所有链接/按钮目标(href / action)并删除onclick标签来改变它。然后我尝试在JavaScript的帮助下将它们带回到它们之前的位置。这是代码:

function transformLinksRecursive(from)
{
    var link
    var href;
    var tmp;
    from.children().each(function()
    {
        link = $(this);
        if(link.is('a'))
        {
            href = link.attr('href');
            if(!href || href.substring(0, 9) !== '/hashtag/')
                return;

            link.prop('id', 'menubutton_' + href.substring(9));
            link.click(function() { menuButtonClick(link.get(0)); });
            link.removeAttr('href');
            console.log("Link found: " + href + " / " + link.get(0));
        }
        else if(link.is('form'))
        {
            href = link.attr('action');
            if(!href || href.substring(0, 9) !== '/hashtag/')
                return;

            tmp = link.contents();
            link.replaceWith(tmp);
            tmp.prop('id', 'menubutton_' + href.substring(9));
            tmp.click(function() { menuButtonClick(tmp.get(0)); });
            console.log("Form found: " + href + " / " + tmp.get(0));
        }
        else
            transformLinksRecursive(link);
    });
}

问题是所有按钮都获得相同的目标(tmp.get(0))。让我解释一下:

函数menuButtonClick执行此操作:

function menuButtonClick(parent)
{
    var link = parent.id;
    if(link)
        link = link.substring(link.indexOf("_") + 1);
    else
        link = parent;

...

因此需要读出ID以获取链接。 ID设置正确:

DOM tree of the buttons

但是所有按钮都链接到微调器(所以parent.id似乎总是menubutton_spinner)。

我做错了什么?

0 个答案:

没有答案