使用 (this) 和 next() 修改函数,因此可以与多组元素一起使用
Posted
技术标签:
【中文标题】使用 (this) 和 next() 修改函数,因此可以与多组元素一起使用【英文标题】:Modify function using (this) and next() so can be used with many sets of elements 【发布时间】:2013-03-16 20:46:41 【问题描述】:下面的函数使用jQuery UI MultiSelect Widget动态地将内容添加到多选元素(在此示例中,文本输入到#newItem并添加到#example1,并基于此'Refresh' demo。
我在 100 多个元素上使用它,因此想修改函数,以便不需要为每个元素指定选择器。我过去使用过(this)
和next()
,但是这个函数比我以前使用的函数要复杂一些,我不知道如何修改它以便使用相同的选择器整个表格。
我在此处发布了该函数的工作示例:http://jsfiddle.net/chayacooper/ezxSF/24/
JS
$(function ()
var el = $("#example1").multiselect(),
selected = $('#selected'),
newItem = $('#newItem');
$("#add").click(function ()
var v = newItem.val(), opt = $('<option />',
value: v,
text: v
);
if (selected.is(':checked'))
opt.attr('selected', 'selected');
opt.appendTo(el);
el.multiselect('refresh');
);
);
<div>
<input type="text" id="newItem" />
<input type="button" id="add" value="Add" />
<label><input type="checkbox" id="selected" />Selected?</label>
<select id="example1" name="example-refresh" class="multiselect" multiple="multiple">
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
</div>
【问题讨论】:
【参考方案1】:改变这个:
<input type="button" id="add" value="Add" />
到一个班级,所以我们有一个共同的起点
<input type="button" class="add" value="Add" />
然后做:
$(function ()
$(".add").click(function ()
var el = $(this).siblings('select').multiselect(),
selected = $(this).siblings('label').find('input[type="checkbox"]'),
newItem = $(this).prev('input'),
v = newItem.val(),
opt = $('<option />', value: v, text : v );
if (selected.is(':checked'))
opt.prop('selected', true);
opt.appendTo(el);
el.multiselect('refresh');
);
);
【讨论】:
我只需要按类分别调用多选小部件,然后它就像做梦一样工作:-) 一个问题 - 因为这些不会是 或以上是关于使用 (this) 和 next() 修改函数,因此可以与多组元素一起使用的主要内容,如果未能解决你的问题,请参考以下文章
未处理的承诺拒绝:this._next 不是函数:@angular/fire/messaging 中的区域
Next.js 纱线构建因 plotly.js 失败(发生构建错误 ReferenceError: self is not defined)