にあなたは」要素liを生成するための余分な作業をたくさん追加するそれ。さらに、コードが実行される方法にはいくつかの問題があります。最初に、2つの独立したアンカータグを作成しています(ここでは.append(b);
、ここでは$(b)
)。次に、作成した2番目のアンカータグにイベントハンドラをアタッチしていますが、そのタグをDOMに挿入していません。
ありがたいことに、これを修正できます。 jQuery Docsを参照すると、大部分の関数がjQuery
を返すことがわかります。これは、コマンドを連鎖させてコードの複雑さを減らすことができるため、素晴らしいことです。次のことを試してみてください。
$('<a />', { "class": "dz-remove removeAttachment", text: "Remove" })
.appendTo($(dropZoneElement).find(".dz-file-preview"))
.on('click', function() {
dropone.removeAllFiles();
});
DEMO:
// Document Ready
$(function() {
$('<a />', { "class": "dz-remove removeAttachment", text: "Remove" })
.appendTo($('#dropzoneElement').find(".dz-file-preview"))
.on('click', function() {
\t alert("I'm chained!");
});
});
a {
display: block;
border: 1px solid red;
color: red;
padding: 5px 7px;
width: 70px;
text-align: center;
-webkit-transition: 0.3s;
-moz-transition: 0.3s;
-o-transition: 0.3s;
-ms-transition: 0.3s;
transition: 0.3s;
}
a:hover {
background: red;
color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dropzoneElement">
<div class="dz-file-preview"></div>
</div>
'B'は単なる文字列である、あなたはそれにイベントリスナーを追加する前に追加DOM要素を選択する必要があります。 – DBS
このスニペットがループしていて、複数のものが自分のページに追加されているので、正しいスニペットを選択していることを確認したいだけです。 – user1186050
'b'ではDOMの既存の要素を参照していません。追加したばかりの要素を選択する必要があります。 – yuriy636