質問

している問題を捏アンカーをクリックによjQuery:なぜ私thickboxが初めてクリックし、入力ボタンを行うのではなく、少々時間がかかる?

こちらは自分のコード:

<input onclick="$('#thickboxId').click();" type="button" value="Click me" />

<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>

ない場合、をクリックしても直接のリンクがないようにしているのthickboxの入力ボタンを押します。これはFF.Chromeいう。他のヒント?

役に立ちましたか?

解決

をしないようにしてinliningおjQuery話をするようです。入スクリプトタグのトップページの結合に click イベント:

<script type="text/javascript">
$(function(){
    $('#thickboxButton').click(function(){
        $('#thickboxId').click();
    });
});
</script>

<input id="thickboxButton" type="button" value="Click me">
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>

編集:

ねばをシミュレーションユーザが物理的にリンクをクリックしなくなるとは思えることが可能です。回避策が更新ボタンの click イベントの変更 window.location Javascript:

<script type="text/javascript">
$(function(){
    $('#thickboxButton').click(function(){
        window.location = $('#thickboxId').attr('href');
    });
});
</script>

編集2:

今こThickboxカスタムjQuery UIウィジェットからの指示 こちらの:

方法:

  • 当ウェブサイトへのリンクを要素<a href>)
  • のリンクをクラス属性の値thickbox(class="thickbox")
  • href 属性のリンクの追加は以下のアンカー: #TB_inline
  • href 属性後 #TB_inline 以下のように追加クエリー文字列をアンカー:

    ?height=300&width=300&inlineId=myOnPageContent

  • 変更の値の高さ、幅、inlineIdクエリに含まinlineIDのIDの値の要素が含まれるコンテンツのご説明させていただき、ThickBox.

  • 任意加えても良いでしょうモーダル=trueのクエリー文字列(例: #TB_inline?height=155&width=300&inlineId=hiddenModalContent&modal=true いることにThickBoxを必要との呼び出し tb_remove() 機能からThickBox.の隠れモードコンテンツの例では、クリックするだけあり、ThickBox.

他のヒント

何だった私のために働いてます:

$('a.mylink')[0].click()

私は最近、jQueryの経由でマウスクリックイベントをトリガする方法を発見しました。

    <script type="text/javascript">
    var a = $('.path > .to > .element > a')[0];
    var e = document.createEvent('MouseEvents');
    e.initEvent( 'click', true, true );
    a.dispatchEvent(e);
    </script>

このアプローチは、Firefox、ChromeとIEで動作します。それは誰かに役立ちます願っています:

var comp = document.getElementById('yourCompId');
try { //in firefox
    comp.click();
    return;
} catch(ex) {}
try { // in chrome
    if(document.createEvent) {
        var e = document.createEvent('MouseEvents');
        e.initEvent( 'click', true, true );
        comp.dispatchEvent(e);
        return;
    }
} catch(ex) {}
try { // in IE
    if(document.createEventObject) {
         var evObj = document.createEventObject();
         comp.fireEvent("onclick", evObj);
         return;
    }
} catch(ex) {}

これは私がこのタスクを処理するために簡単に何かを発見した非常に古い質問ですが。これは、シミュレートと呼ばれるjqueryのUIチームによって開発されたjQueryプラグインです。あなたはjqueryの後にそれを含めることができ、その後、あなたのような何かを行うことができます。

<a href="http://stackoverflow.com/"></a>
$('a').simulate('click');

クロームでは正常に動作し、Firefoxの、オペラ、IE10.youは<のhref = "https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js" のrel =からそれをダウンロードすることができます"noreferrer"> https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js の

の質問タイトルは"したいのでシミュレーションをアンカーをクリックしjQuery?".も利用できる"トリガ"または"triggerHandler法"はこのように:

<script type="text/javascript" src="path/to/jquery.js"></script>
<script type="text/javascript" src="path/to/thickbox.js"></script>
<script type="text/javascript">
$(function() {
    $('#btn').click(function() {
        $('#thickboxId').triggerHandler('click');
    })
})
</script>
...
<input id="btn" type="button" value="Click me">
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>

試験は行っておりません、この実際にスクリプトが使用しました trigger et al前に、仕事をしている'ight.

更新
triggerHandler なんかのOPについてお聞きしましょう。と思い 1421968 提供の最良の答えます。

からのセレンのAPIがどのようなトリガーをクリック要素をブラウザに対応するという

その BrowserBot.prototype.triggerMouseEvent 機能です。

私はあなたが使用できると信じています:

$('#yourLink').bind('click', function() {
  //Do something over here
});

$('#yourLink').trigger('click');

これは、簡単に、実際にそれをクリックせずに、クリック機能をトリガします。

あなたが偽のアンカーをクリックする必要がありますか? ThickBoxのサイトから:

  

ThickBoxのリンク要素は、入力要素(典型的にはボタン)、及びエリア素子(イメージマップ)から呼び出すことができます。

それが許容可能である場合は、

これは、入力自体にThickBoxのクラスを置くことと同じくらい簡単にする必要があります:

<input id="thickboxButton" type="button" class="thickbox" value="Click me">
ない場合は、

、私は、それが唯一の最初のクリックでトリガーだかどうかを確認するためのFirebugを使用し、アンカー要素のonclickの方法でブレークポイントを置くことをお勧めします。

編集ます:

さて、私はかなり正確にあなたのコードはChromeとFirefoxの両方で働いていた自分のために、私のためにそれを試してみました

<html>
<head>
<link rel="stylesheet" href="thickbox.css" type="text/css" media="screen" />
</head>
<body>
<script src="jquery-latest.pack.js" type="text/javascript"></script>
<script src="thickbox.js" type="text/javascript"></script>
<input onclick="$('#thickboxId').click();" type="button" value="Click me">
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>
</body>
</html>

ウィンドウのポップアップに関係なく、私は、入力またはアンカー要素をクリックした場合。上記のコードは、あなたのために働くなら、私はあなたのエラーが別の場所にあり、あなたが問題を特定しようとすることを示唆しています。

もう一つは、おそらく我々はjqueryの/ ThickBoxの異なるバージョンを使用していることです。私はThickBoxのページから得たものを使用しています - jQueryの1.3.2と3.1をThickBoxの

あなたは、jQueryを介して、またはあなたのリンクのhrefを模倣するアクションを持つHTMLページのコードでフォームを作成することができます:

<a id="anchor_link" href="somepath.php">click here</a>.

var link = $('#anchor_link').attr('href');
$('body').append('<form id="new_form" action="'+link+'"></form>');
$('#new_form').submit();
ページに上陸しながら、

アンカーのクリックをシミュレートするために、私はちょうど$(document).ready.に複雑なトリガの必要性を全くscrollTopスプライトプロパティをアニメーション化しないためにはjQueryを使用し、それはIE 6および他のすべてのブラウザで動作します。

あなたは私がいないとして、jQueryのを使用する必要がない場合。私は.click()のクロスブラウザのFUNCに問題がありました。だから私は使用します:

eval(document.getElementById('someid').href)

あなたは、このように行うことができますJavaScriptで

function submitRequest(buttonId) {
    if (document.getElementById(buttonId) == null
            || document.getElementById(buttonId) == undefined) {
        return;
    }
    if (document.getElementById(buttonId).dispatchEvent) {
        var e = document.createEvent("MouseEvents");
        e.initEvent("click", true, true);
        document.getElementById(buttonId).dispatchEvent(e);
    } else {
        document.getElementById(buttonId).click();
    }
}

とは、

のようにそれを使用することができます
submitRequest("target-element-id");

ユレのスクリプトを使用して、私はあなたが望むように容易など多くの要素を「クリック」して、これを作った。
私はちょうど1600+アイテムにGoogleリーダーを使用し、それは、(Firefoxで)完璧に働いていた!

var e = document.createEvent('MouseEvents');
e.initEvent( 'click', true, true );
$(selector).each(function(){this.dispatchEvent(e);});

JQuery('#left').triggerHandler('click');はFirefoxとIE7で正常に動作します。私は他のブラウザでそれをテストしていない。

自動ユーザーがクリックをトリガしたい場合は、次の操作を行います:

window.setInterval(function() 
    {
        $('#left').triggerHandler('click');
    }, 1000);

これは「隠し入力(ファイル)要素」をクリックするには、Androidネイティブブラウザでは動作しません。

$('a#swaswararedirectlink')[0].click();

しかし、これは動作します:

$("#input-file").show();
$("#input-file")[0].click();
$("#input-file").hide();

私は前の回答のいずれかを動作させることができなかったのjQuery UIスピナーとのユニットテストで「クリック」をシミュレートしようとしていて。特に、私は、下向きの矢印を選択する「スピン」をシミュレートしようとしていました。私はと彼らのjQuery UIスピナーユニットテストを見て私のために働いた次のメソッドを使用します:

element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();
scroll top