我正在写一个网站。糟糕的是我用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设置正确:
但是所有按钮都链接到微调器(所以parent.id似乎总是menubutton_spinner)。
我做错了什么?