Input.checked创建需要绑定到输入的Dynamic元素
Input.checked creates Dynamic element that needs to be bound to input
我有一个过滤器,当检查输入时,我会动态创建li
元素,但问题是,当您单击该元素时,我似乎无法清除输入。因此,我希望将输入和动态绑定在一起。感谢您提前提供的帮助。
HTML:
<ul class="options flavorProfiles">
<li class="fl"><input type="checkbox" class="chk" id="ftSweet" value="Sweet" />
<label for="ftSweet">Sweet</label></li>
<li class="fl"><input type="checkbox" class="chk" id="ftSavory" value="Savory" />
<label for="ftSavory">Savory</label></li>
<li class="fl"><input type="checkbox" class="chk" id="ftSpicy" value="Spicy" />
<label for="ftSpicy">Spicy</label></li>
<li class="fl"><input type="checkbox" class="chk" id="ftTangy" value="Tangy" />
<label for="ftTangy">Tangy</label></li>
</ul>
<div class="results-label">Filters Applied:
<a href="javascript:void(0)" id="filterClear">Remove All</a>
</div>
<ul id="results"></ul>
JS:
$(document).ready(function() {
var $li;
// Adds 'expand' to .cat-filter on click
$('.filter-header').click(function() {
if($(this).hasClass("expand")) {
$(this).removeClass("expand");
}
else {
$(this).addClass("expand");
}
});
// Turns Filter Groups On/Off
$('.filter-header.secPB').click(function() {
$('.options.prodBenefits').toggle();
});
$('.filter-header.secSD').click(function() {
$('ul.options.specialDiets').toggle();
});
$('.filter-header.secFP').click(function() {
$('ul.options.flavorProfiles').toggle();
});
// Adds/Removes input value text under results
$('.options input').change(function() {
if (this.checked) {
$li = $('<li class="active-filter"></li>');
$li.text(this.value);
$('#results').append($li);
var input = this;
$li.click(function () {
$(input).click();
});
}
else {
$('li:contains('+this.value+')', '#results').remove();
}
});
// Clears ALL filter results on click
$('#filterClear').click(function() {
$('#results').empty($li);
});
}); // DOM Ready
此行错误:
$($li).on("click", this, clear(this.value));
它打算将一个函数作为事件处理程序绑定到新插入的li
元素,但实际上您在那里调用了clear
。这实际上意味着您没有绑定事件处理程序。一种解决方案可能是使用clear.bind(null, this.value)
作为该参数。
此外,第二个参数也很奇怪:您传递了一个DOM元素(this
),但jQuery会将其解释为要传递为event.data
的数据。它不能将其解释为选择器(如果是这样的话),因为它必须是一个字符串。
第三,您正在制作一个已经是jQuery对象的jQuery对象。所以写$li
而不是$($li)
。
根据你想在那里做什么,你可能会使用以下语法:
$li.click(clear.bind(null, this.value));
但是,当你实际上想模拟取消选中相应的复选框(输入)时,只需点击它就更容易了
var input = this; // reference to `this` will be lost, so save it
$li.click(function () {
$(input).click() // Trigger a click event on the checkbox
});
因此,现在单击li
元素也会触发对复选框的单击,并执行上面的事件处理程序。然后将执行该处理程序中的else
部分。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 如何将输入(type=text)从html表单传递到javascript函数
- 单击jquery清除输入值
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- jQuery自定义验证比较多个输入的序列
- Sails.js:同时发布文本输入和一个文件
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 使用jquery在单击时在单元格中输入值
- Ajax文件加载和<输入>文件加载
- 是否可以将一个函数输入连接到另一个函数调用的文本
- Input.checked创建需要绑定到输入的Dynamic元素
- jquery的一组输入值乘以dynamic(另一个输入)