我想生成一个在创建后立即点击的链接,但没有任何反应
代码:
var link = $("<a></a>");
link.attr("href", "/dostuff.php");
link.attr("target", "_blank");
link.click();
正确设置了属性:
var link = $("<a></a>");
link.attr("href", "/dostuff.php");
link.attr("target", "_blank");
var linkcheck = link.wrap('<p>').parent().html();
console.log(linkcheck);
返回:
<a href="/dostuff.php" target="_blank"></a>
没有错误
我尝试追加它,绑定点击它,点击它并将其删除
var link = $("<a></a>");
link.attr(
{
id : "linky",
href : "/dostuff.php",
target: "_blank"
});
$("body").append(link);
$("#linky").on("click", function() { console.log("Link clicked"); });
$("#linky").click();
$("#linky").remove();
正在执行点击操作,但默认操作(打开链接)不是..
我找到了解决方案:创建并提交<form>
! See my answer.
答案 0 :(得分:4)
我有答案。显然jQuery不支持default behavior of links clicked programmatically
创建和提交表单虽然效果很好(在Chrome 26
,FF 20
和IE 8
中测试过):
var form = $("<form></form>");
form.attr(
{
id : "newform",
action : "https://google.nl",
method : "GET",
target : "_blank" // Open in new window/tab
});
$("body").append(form);
$("#newform").submit();
$("#newform").remove();
它的作用:
现在您有一个新的标签/窗口加载“https://google.nl”(或您想要的任何网址,只需替换它)。不幸的是,当您尝试以这种方式一次打开多个窗口时,在尝试打开第二个窗口时(第一个仍然打开),会弹出一个Popup阻止的消息栏。
答案 1 :(得分:2)
关于更新的脚本:如果你选择了正确的选择器($("#linky")
),它就可以了。
var link = $("<a id='linky'>Hello</a>");
link.attr("href", "/dostuff.php");
link.attr("target", "_blank");
$("body").append(link);
$("#linky").on("click", function() {alert("hai");});
$("#linky").click();
$("#linky").remove();
答案 2 :(得分:1)
var link = $("<a id='linky'></a>");
link.attr("href", "/dostuff.php");
link.attr("target", "_blank");
$("body").append(link);
$("linky").live("click", function() {alert("hai"); $(this).remove()});
$("linky").click();
//$("linky").remove();
所以你实际上对click事件做出了反应。 是的!问题是你为什么要这样做?