2017-10-16 6 views
-2

をチェックし、私はリンク内radiobuttonを持っている:リダイレクトJavaScriptが無効になっている場合は、それ以外の子ラジオボタン

<label class="dd--option"> 
    <a href="someURL" class="dd--noscript--link"> 
     <input name="dd_radio" type="radio" class="dd--radio dd--radio--js" checked /> 
     <span class="dd--label"> 
      <img class="dd--label--image" src="http://90.0.0.91/show.php/swatch/23080/black"/> 
      <span class="dd--label--text">Black</span> 
     </span> 
    </a>      
</label> 

私は次のことを達成したい:

  • JavaScriptが無効になっている場合ブラウザでは、 attributeanchor tagのリンクにリダイレクトしたいと思います。
  • JavaScriptを有効にしていると、どこにもリダイレクトしないでください。 radiobuttonのみをチェックする必要があります。

これを達成できますか?はい、どうですか?

+0

アンカーにhrefを追加し、JavaScriptを使用してクリックをキャンセルします。 – epascarello

+1

JSが有効になっているときに実行したいスクリプトを作成してください。 JSが無効になっている場合、JSは無視され、アンカーをクリックするとリンクが表示されます。 – Barmar

+0

@Barmarここにプレースホルダとして#を付ける。 –

答えて

1

すべてのブラウザで親<a>まで<input>ます自動的にバブルイベントでクリックする場合、100%はわからないが、もしそうなら、これはそれを行う必要があります。

$('.dd--noscript--link').on('click', function(e) { 
    e.preventDefault(); 
}); 

@Barmarはコメントで述べたように、JSを無効にした場合、href="#"はブラウザに新しいページを読み込ませません。

+0

彼は、' href = "#" 'は単に質問のプレースホルダーとして意味されているというコメントを追加しました。実際のコードにはそこにURLがあります。それを反映させるために質問を編集しました。 – Barmar

1

ラジオボタンにJavascriptイベントハンドラを追加し、event.stopPropagation()を使用します。 JavaScriptは有効になっている場合

$(".dd--radio--js").click(function(e) { 
    e.stopPropagation(); 
}); 

、この関数が実行され、stopPropagation()はアンカーにバブリングからクリックを防ぐことができますので、リンクをたどることはありません。

JavaScriptが無効になっている場合、このコードは実行されないため、クリックがアンカーにバブルアウトされ、リンクが実行されます。

+0

@jmorganmartinこれらの要素にはデフォルトのクリックアクションがないため、クリックハンドラを追加した場合にのみ必要です。あなたの答えは、内部のものとは関係なく、おそらくより良いでしょう。 – Barmar

関連する問題