2016-11-08 12 views
0

だけではJavaScript/jQueryを使って始め兄弟にプロパティを追加

私はfollwingフォーム(生成された出力に、その制御なし) を持っており、ラベルが<が含まれている場合は、それが必要なようにしたいのem> * </em>

<div class="product-configure-options-option"> 
    <label for="product_configure_option_112843">Aantal verpakkingen links: <em>*</em></label> 
    <select name="option[112843]" id="product_configure_option_112843"> 
    <option value="467619" selected="selected">Geen</option> 
    <option value="467631">1</option>  
    <option value="467623">5</option> 

    </select> 
    <div class="product-configure-clear"></div> 
</div> 

私は次のコードを試しました。 divにemが含まれるラベルが含まれている場合は、最も近いselectを見つけて、必要なプロパティを追加します。

$("product-configure-options-option label").has("em")(function() { 
$(this).find('select').prop('required',true); 
}); 

私は間違っていますか?

答えて

1
  1. クラスをお探しの場合は、先に.を追加してください。
  2. JQueryセレクタはオブジェクトを返しますが、このようなオブジェクトで匿名の メソッドを呼び出すことはできません。
  3. .find()は、他の要素内の要素を探していますが、代わりに .next()を使用してください。

var labelsWithEm = $(".product-configure-options-option label").has("em"); // find all relevant items 
 

 
labelsWithEm.each(function() { // iterate the items 
 
    $(this).next('select').prop('required', true); // find the next sibling that is select, and add the prop 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="product-configure-options-option"> 
 
    <label for="product_configure_option_112843">Aantal verpakkingen links: <em>*</em> 
 
    </label> 
 
    <select name="option[112843]" id="product_configure_option_112843"> 
 
    <option value="467619" selected="selected">Geen</option> 
 
    <option value="467631">1</option> 
 
    <option value="467623">5</option> 
 

 
    </select> 
 
    <div class="product-configure-clear"></div> 
 
</div>

0

あなたのコードには2つの問題があります。

  1. $("product-configure-options-option ...は、「製品のconfigure-オプション・オプションと呼ばれるタグを持つ要素を探します。 "あなたはピリオドを付加することで得ることができ、代わりにそのクラスを持つ要素をしたい:$(".product-configure-options-option ...

  2. $(this).find('select')は、ラベルのだSELECT要素を探します。あなたは代わりに兄弟を欲しがっています。それは$(this).next('select')で得ることができます。

関連する問題