2016-08-21 25 views
0

ユーザーがコンソールからボタンをクリックしてシミュレートしようとしていて、何もできません。コンソールからjQueryでアンカータグをクリックするユーザーをシミュレートします

まず、chegg.com(Chromeを使用)にアクセスしてください。次に、ページ要素を調べて、Chromeのモバイルデバイスシミュレータが開くようにデバイスを切り替えます(モバイルサイトが必要です)。

jQueryを使用してハンバーガーメニュー(3行積み重ね)をクリックしますが、コンソールに入力するものは何もありません(解決策はコンソールから動作する必要があります)。要素は次のようになります。

<a href="javascript:;" title="More ..." class="nav icon More">Navigate</a> 

は当初、私が問題を引き起こしていたhref="javascript:;"は、(私は通常、それは私はストローで把握してはならないことを実現)と思ったが、いくつかのテストを行った後、それはしていませんそれがそうであるように見える。私は次のことを試してみました

:私も場合は親要素(複数可)にイベントリスナーをクリックしようとしている

$('a.nav.icon.More').click() 
$('a.nav.icon.More')[0].click() 
$('a.nav.icon.More').trigger() // returns error 
$('a.nav.icon.More').mousedown() 

それらの一方に取り付けられますが、無駄にされました。誰かが私を正しい方向に向けることができますか?

+0

$( 'a.nav.icon.More')の長さは何を返しますか? – Developer

+0

モバイルサイトに切り替えるとハンバーガーが表示されず、 '$( 'a.nav.icon.More')は何も返しません。 – Barmar

+0

「未定義」を返します。 – jmp

答えて

1

これは本当に奇妙な問題です。あなたが気付いたように、クリックする通常の方法はすべて機能しません。私はあなたがリンクしているこのサイトのために働いている人はいないことを明らかにしているので、ここに投稿された「回答」には驚いています。

ソースコードを見ると、サイトのJSは、伝統的な方法ではなく、ns.CLICKイベントのhamburgerにバインドされた非伝統的な方法で、 clickイベント)。手動でメニューをクリックして再度クリックすると、ブラウザの前方ボタンと戻るボタンが変わってしまい、ルーティングと履歴が実装された方法が奇妙に思えるようになります。

あなたは狂っていません:)私はサイトのクリックをトリガーする簡単な方法は考えていませんが、JSからclickイベントはhiddenクラスを切り替えるのと同じことがわかりますExtendedNavから。したがって、クリックが行う操作と同等の操作が必要な場合は、$('.ExtendedNav').toggleClass('hidden')に電話することができます。

+0

ええ、それは行く方法かもしれません。助けてくれてありがとうございました。 – jmp

1
<div class="more-item nav-item active"> 
    <div class="header">More <span class="arrow-down"></span></div> 
    <div class="carrot"> 
     <div class="carrot-inner"></div> 
    </div> 
    <div class="more-hover-content hover-box"> 
     <ul> 
      <li><a href="http://www.chegg.com/signup/?redirect=http%3A%2F%2Fwww.chegg.com%2F" class="track-signup">Create an account</a></li> 
      <li><a href="http://www.chegg.com/login/?redirect=http%3A%2F%2Fwww.chegg.com%2F" class="track-signin hide-initially">Sign in</a></li> 
      <li><a href="http://www.chegg.com/login/?redirect=/my/account/returnbooks" class="track-returnbooks" data-noajax="">Return your books</a></li> 
      <li><a href="http://www.chegg.com/sell-textbooks" class="track-selltextbooks" data-noajax="">Sell your books</a></li> 
      <li><a href="http://www.chegg.com/contactus" class="track-help" data-noajax="">Help</a></li> 
     </ul> 
    </div 

あなたは

この

$(".more-item.nav-item").click() 
+0

あなたはデスクトップサイトを見ています。私の説明にあるように、これはモバイルサイトで動作するために必要です。 – jmp

0

トリガーが最良の選択肢の一つです試みるコンテナタグをクリックして呼び出す必要があります。ただし、イベントをパラメータとして渡す必要があります。

$('a.nav.icon.More').trigger('click'); 
+0

はい、以前に試した別のオプションとして追加する必要がありましたが、どちらも機能しませんでした。 – jmp

関連する問題