2
が、私はこの機能を備えたAPI応答にカードを作成
row`:ここすべてのコンテンツがbootrstrap内部unclickableある `
function createCard(name, img, description) {
$('#result').append(`
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="card" style="height: 200px; border: 2px solid black; border-radius: 5px; overflow: hidden; padding: 15px; margin: 15px 0;">
<div class="card-content" style="height: 100%; overflow: hidden;">
<div class="star" style="height: 1.6em;">
<span class="glyphicon glyphicon-star-empty pull-right"></span>
</div>
<div class="row">
<div class="image col-xs-4" style="margin-top: 10px;">
<figure style="height: 120px;">
<img src=${img} alt="" style="max-width: 100%; max-height: 100%;">
</figure>
</div>
<div class="description col-xs-8">
<h4>${name}</h4>
<p>${description}</p>
</div>
</div>
</div>
</div>
</div>
`);
}
とresult
ブロックです:
<div id="result" class="row"></div>
そしてここでjQueryのイベントハンドラです:
$('.star').on('click', function() {
console.log("!")
});
問題は、コンソールログはありません。star
のブロックは他のブロックと同じようにresult
ブロック内にありますが、それはresult
と大丈夫です。
ちなみに、ホバー疑似クラススタイリングをstar
要素に適用すると、まったく問題なく動作します。だから、グリフコンがどのようにホバー上で色を変えるのかを見ることができますが、クリックイベントでは反応しません。
私の質問は、ブートストラップrow
クラス内のすべてのコンテンツが解除不可能な理由です。
はい、それは親として 'result'で動作します。大変ありがとう、@スーリー。つまり、問題は動的コンテンツ読み込みであると言います。しかし、私は、そのような変化が起こったときには、DOMが常に再登録されると考えました。それでは、なぜそのような場合にページが変更に気付かないのですか? –
@IgorChernega JSイベントハンドラは、スクリプトが呼び出されたときに既に存在している要素だけであるため、動的に作成された要素には関連付けられていないためです。 – Soolie