2

作成直後にクリックされるリンクを生成したいのですが、何も起こりません

コード:

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();

クリックアクションは実行されていますが、デフォルトのアクション(リンクを開く)は実行されていません。


UPDATE2

<form>私は解決策を見つけました: !を作成して送信します。私の答えを見てください。

4

3 に答える 3

4

私には答えがあります。どうやらjQueryは、プログラムでクリックされたリンクのデフォルトの動作をサポートしていません

ただし、フォームの作成と送信は非常にうまく機能します (とでテストChrome 26済み):FF 20IE 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();

機能:

  1. フォームを作成する
  2. 属性を与える
  3. 送信できるようにDOMに追加します
  4. 提出する
  5. DOM からフォームを削除する

これで、「 https://google.nl 」をロードする新しいタブ/ウィンドウができました(または任意の URL を置き換えてください)。残念ながら、この方法で一度に複数のウィンドウを開こうとすると、2 番目のウィンドウを開こうとすると、ポップアップがブロックされたメッセージバーが表示されます (最初のウィンドウはまだ開いています)。

于 2012-07-31T09:22:15.133 に答える
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();
于 2012-07-31T08:55:37.923 に答える
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();

つまり、実際にはクリックイベントに反応します。はい!問題は、なぜこれを実行したいのかということです。

于 2012-07-31T09:01:13.550 に答える