2017-12-24 23 views
1

動的idとjQueryを区別する方法はありますか?動的IDを区別する

HTML:

@foreach($listeSeances as $seance) 
    ... 

    <div class="modal fade reservationModal" id="reservationModal-{{ $seance->id_seance }}" tabindex="-1" role="dialog" aria-labelledby="reservationModal-{{ $seance->id_seance }}" aria-hidden="true"> 
     ... 
    </div> 

@endforeach 

JS:

$('[id^="reservationModal-"]').on('shown.bs.modal', function (e) { 
    console.log('works'); 
}); 

私の目的は、一般的な機能を持つようにJSの任意の番号で{{ $seance->id_seance }}を "置き換え" 方法を見つけることです。

ありがとうございました!

+0

あなたはモーダル要素を見つけるために使用しているセレクタは正しく、あなたにdiv.modal' 'の配列を返します - 問題は何ですか? – Callam

+0

どのモーダルが開いているかを区別する方法はわかりません。 –

+0

'div.modal'にアクセスすることができ、' shown.bs.modal'コールバック内の要素のIDにアクセスすることができます。イベント 'e'を使用して' works 'をログに記録します。 target.id'。 – Callam

答えて

2

shown.bs.modalイベントのターゲットはdiv.modalです要素IDを追跡する - 少しの解析で、補間される前に元の値のid_seanceを得ることができます。

$('[id^="reservationModal-"]').on('shown.bs.modal', function (e) { 
 
    let id_seance = e.target.id.split('-').pop(-1); 
 
    console.log('works', { id_seance }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<!-- Latest compiled and minified CSS --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 

 
<!-- Optional theme --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
 

 
<!-- Latest compiled and minified JavaScript --> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
 

 
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#reservationModal-1"> 
 
    Reservation 1 
 
</button> 
 

 
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#reservationModal-2"> 
 
    Reservation 2 
 
</button> 
 

 
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#reservationModal-3"> 
 
    Reservation 3 
 
</button> 
 

 
<div class="modal fade reservationModal" id="reservationModal-1" tabindex="-1" role="dialog" aria-labelledby="reservationModal-1" aria-hidden="true"> 
 
    <div class="modal-dialog" role="document"> 
 
    <div class="modal-content"> 
 
     <div class="modal-header"> 
 
     <h5 class="modal-title">Reservation 1</h5> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div> 
 

 
<div class="modal fade reservationModal" id="reservationModal-2" tabindex="-1" role="dialog" aria-labelledby="reservationModal-2" aria-hidden="true"> 
 
    <div class="modal-dialog" role="document"> 
 
    <div class="modal-content"> 
 
     <div class="modal-header"> 
 
     <h5 class="modal-title">Reservation 2</h5> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div> 
 

 
<div class="modal fade reservationModal" id="reservationModal-3" tabindex="-1" role="dialog" aria-labelledby="reservationModal-3" aria-hidden="true"> 
 
    <div class="modal-dialog" role="document"> 
 
    <div class="modal-content"> 
 
     <div class="modal-header"> 
 
     <h5 class="modal-title">Reservation 3</h5> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

私のニーズに応えるようです!ありがとうございます! –

0

このように、彼らにclassを追加します。

$('[id^="reservationModal-"]').addClass("reservationModal"); 

、これを使用します。

:あなたは機能を区別したい場合、あなたはこのようにそれを行うことができます

$(".reservationModal").on('shown.bs.modal', function (e) { 
    console.log('works'); 
}); 

$(".reservationModal").each(function() { 
    var currentID = this.id; 
    $(this).on('shown.bs.modal' function(e) {/*...*/}); 
}); 
+0

これはなぜ機能しますか? 'on'メソッドはセレクタをクラスにする必要がありますか? o_O – Callam

関連する問題