jQuery .change() 方法不适用于动态创建的复选框
jQuery .change() method does not work for dynamically created check-box
我必须动态地创建一个元素级联。
<label class="control-label col-sm-2 text-primary" for="prix">Prix:</label>
<div class="col-sm-10">
<select name="prix" id="prix">
<option value="0">Type de prix</option>
<option value="1">Gratuit</option>
<option value="2">Montant</option>
<option value="3">Echange</option>
<option value="4">Prix à discuter</option>
<option value="5">Prix n'est pas d'application</option>
</select>
</div>
<div id="select_prix" ></div>
<div id="select_offre" ></div>
当我选择选项 value="2"
时,必须在div id="select_prix"
中插入一个复选框
所以我使用 jquery:
$('#prix').on('change', function() {
if ($(this).val() < 2) {
$("#select_prix").empty();
}
var stroffre ='<label class="col-sm-2 control-label text-primary">Offre ? </label>';
stroffre +='<div class="checkbox col-sm-10">';
stroffre +='<label class="checkbox-custom" data-initialize="checkbox">';
stroffre +='<input class="sr-only" id="chkoffre" type="checkbox" value="">';
stroffre +='<span class="checkbox-label">Autoriser les offres</span>';
stroffre +='</label> </div>';
if ($(this).val() == 2) {
$("#select_prix").append(stroffre);
}
});
还行。出现复选框,我得到的是:
复选框 ' Autoriser les offres'
现在,当我选择复选框时,我想在div中插入一个新的行输入id="select_offre"
我为此制作了一个新的jQuery代码:
$("#chkoffre").change(function () {
alert( 'CheckboxOffre' ); // or $(this).val()
if($(this).is(":checked")) {
}else{
}
});
很遗憾,我没有收到警报消息。
你可以使用 jquery on 来做到这一点:
$("#chkoffre").on("change", function(){
alert( 'CheckboxOffre' ); // or $(this).val()
if($(this).is(":checked")) {
}else{
}
});
这称为事件委派。
为了侦听已动态添加到 DOM 的元素上的事件,必须使用事件委托而不是直接绑定的事件处理程序。如 .on 的 jQuery api 文档中所述,"事件处理程序仅绑定到当前选定的元素;它们必须在代码调用 .on()"时存在。http://api.jquery.com/on/对于 .change 和其他直接绑定事件类型也是如此。
所以这个:
$("#chkoffre").change(function () {
必须更改为:
$("#select_prix").on("change", "#chkoffre", function () {
下面是一个小提琴,演示了应用于代码时的此修复程序:https://jsfiddle.net/uuvcyf9o/以下是完整代码:
$('#prix').on('change', function() {
if ($(this).val() < 2) {
$("#select_prix").empty();
}
var stroffre ='<label class="col-sm-2 control-label text-primary">Offre ?</label>';
stroffre +='<div class="checkbox col-sm-10">';
stroffre +='<label class="checkbox-custom" data-initialize="checkbox">';
stroffre +='<input class="sr-only" id="chkoffre" type="checkbox" value="">';
stroffre +='<span class="checkbox-label">Autoriser les offres</span>';
stroffre +='</label></div>';
if ($(this).val() == 2) {
$("#select_prix").append(stroffre);
}
});
$("#select_prix").on("change", "#chkoffre", function () {
alert( 'CheckboxOffre' ); // or $(this).val()
if($(this).is(":checked")) {
}else{
}
});
相关文章:
- onkeyup无法动态创建多个文本区域
- 如何使用javascript从主svg对象动态创建svg视图框
- 在动态创建的元素上获取对特定选择器的引用
- JQuery对动态创建的对象进行选择
- 使用jquery动态创建ul-li
- 从动态创建的html选择中选择所选选项
- 如何在动态创建的节点上绑定函数
- 动态创建OnClick事件Javascript
- 谷歌地图动态创建的标记点击事件使用相同的标记
- 在动态创建的标记上添加事件
- 动态创建一个javascript/jquery多级数组
- 如何动态创建许多Jquery颜色选择器(eyecon)
- 如何为动态创建的文本区域中输入的值更新ng模型
- 对动态创建的元素运行jQuery.ech()
- 使用jQuery访问动态创建的项
- 动态创建的iframe中的window.onerror在lne 0处给出脚本错误
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- 我想将链接关联到动态创建的p元素上的相应文章
- AngularJs从列表中动态创建指令
- 使用javascript动态创建html内容/元素