2017-01-18 12 views
0

したがって、いくつかのプラグインを扱っています。選択メニューに属性がない場合、機能を実行する必要があります。私はこれに困惑し、今まで成功しなかった多くの方法を調べました。 jQueryを使用して関数を実行する選択メニューに選択属性がない場合

私はそうのような構造の選択を持っている:

<div class="quantity_select"> 
<select name="cart[d3207bfbf377b2c6a2d5f0f397ecef61][qty]" title="Qty" class="qty"> 
     <option value="500" data-qty="500" data-price="0.27" selected=""> 
      500&nbsp;envelopes&nbsp;$135.00   </option> 
     <option value="1000" data-qty="1000" data-price="0.18"> 
      1000&nbsp;envelopes&nbsp;$180.00   </option> 
     <option value="2000" data-qty="2000" data-price="0.15"> 
      2000&nbsp;envelopes&nbsp;$300.00   </option> 
     <option value="5000" data-qty="5000" data-price="0.15"> 
      5000&nbsp;envelopes&nbsp;$750.00   </option> 
</select> 
</div> 

そして私はこれがあるか、選択されていないし、その結果に基づいて機能を実行するかどうかのどちらかということを検証できるようにする必要があります。だから、これは私が働いているスクリプトです:

$('.qty').each(function(i, obj) { 
    if (!$('option:selected',this).index() <= 0) { 
      $('.actions').find('input[name="update_cart"]').click(); 
     } 
}); 

あり、同じクラスqtyと選択つ以上のように、それはをループする必要があることと、それぞれ1をチェックします。

ここで間違っていることはわかりません。それは'option:selected',thisですか?私はこれがうまくいくと思います。コンソールがエラーを投げているわけではないので、それがチェックされているかどうかを実際に検証していないのでしょうか?

私のテストページにはselected=""という2つの選択肢があり、それ以外のものはトリガーする必要があります。

$('.qty').each(function(i, obj) { 
    if ($('option:selected',this).length > 0) { 
      $('.actions').find('input[name="update_cart"]').click(); 
     } 
}); 

$(「オプション:選択」、これを)あなたがしようとする場合があります

+0

'($(this)).find( 'option:selected')。長さ= 0)){...}' ' –

答えて

0

はそうおそらく動作しません、配列のインデックスを確認し、選択したオプションの配列を返します。

+0

オプションは起動しますが、カートを更新するとページ。選択した属性がまったく存在する場合にのみ、これを実行します。私は問題は 'selected =" "'をチェックし、長さがないので属性の長さがないことだと思います。 –

+0

このクエリは属性の長​​さを返しません。選択されているオプションの配列の長さを返します(ドロップダウンの場合は、0または1、マルチ選択リストボックスの場合は0から多数)。選択された属性が別の方法で存在するかどうかは、$( "option [selected]")であるかどうかを調べることができます。選択された属性が存在するかどうかのオプションの配列を再度返します。 – MikeS

+0

完璧! '$(" option [selected] ")。length。"を使うことに対するあなたの提案は、私が持っていた中核問題を解決するための切符でした。私は、スクリプトが正常にループしていないように見えて、それが最初の選択に当てはまる場合にのみトリガすることに気がつきました。彼らはすべて同じクラス 'qty'を持っているので、' .each'が動くと思うでしょう。何かご意見は? –

関連する問題