ヘルプ テキストを表示および非表示にする JavaScript があります。select2 フィールドが存在しない限り、毎回正常に動作します。
HTML:
<div class="help-wrap">
<div class="form-group">
<label class="control-label required" for="s2id_autogen1">Occupation</label>
<div class="select2-container form-control select2 select2-allowclear" id="s2id_milestone_client1_occupation"><a href="javascript:void(0)" onclick="return false;" class="select2-choice" tabindex="-1"> <span class="select2-chosen">Abstractor</span><abbr class="select2-search-choice-close"></abbr> <span class="select2-arrow"><b></b></span></a><input class="select2-focusser select2-offscreen" type="text" id="s2id_autogen1"><div class="select2-drop select2-display-none select2-with-searchbox"> <div class="select2-search"> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input"> </div> <ul class="select2-results"> </ul></div></div>
<select class="form-control select2 select2-offscreen" id="milestone_client1_occupation" name="milestone[client1_occupation]" tabindex="-1"><option value=""> </option>
<option value="001">Abattoir Worker</option>
<option value="C89">Zoology Consultant</option>
</select>
</div>
<span class="fa fa-question-circle"></span>
<div class="help-text">
Please select your occupation, if you cannot find an exact match for your occupation then please choose the closest match.
</div>
</div>
コーヒースクリプト:
$(document).on 'page:load', ->
$(document).on 'click', (e) ->
$('.help-wrap span').each (i,el) ->
trig = el
if trig != e.target && !$(trig).has(e.target).length
$(trig).removeClass('active')
$(trig).parents('.help-wrap').find('.help-text').hide()
else
$(trig).parents('.help-wrap').find('.help-text').toggle()
$(trig).toggleClass('active')
スパンをクリックすると、ヘルプテキストが表示されるかどうかが切り替わります-select2フィールドが存在しない限り、これは正常に機能します。その場合、何も起こりませんか?
スパン以外のページ上の任意の場所をクリックすると、予想どおりヘルプ テキストが非表示になります。
前もって感謝します