使用对多个元素的jquery函数的调用
Using call on a jquery function for multiple elements
我有下面的代码,它的作用是,当点击按钮时,它会在具有特定id属性的div后面插入。并且它递增一个计数器,该计数器用于指定要插入的div。
这一切都有效,但我想知道的是?我如何更改这些代码,以便创建一个具有属性的对象,然后创建一个可用于插入的方法,最后我调用特定的jquery元素,工作就完成了。
我询问的原因是,我想在其他遵循相同原理但具有不同对象属性的对象上使用此方法,因此我可以使用单个方法调用具有不同属性的不同对象,并在不同div之后进行插入调用。
$(document).ready(function() {
counter = 0;
$("#addMeasurement").on("click", function() {++counter;
//create variables for insert after
var container = '<div id="measurement_container' + counter + '" class="col-12 object">'
var icon = '<span id="measurement_icon' + counter + '" class="flaticon-glass-of-water-with-drop" title="Measurement"></span>';
var info_span = '<span id="measurement_info' + counter + '" class="">';
var info_mT = '<input class="toTop" type="text" name="measurementType' + counter + '" id="measurementType' + counter + '" placeholder="Measurement" size="10">';
var info_mA = '<input class="toTop" style="margin-left:90px;" type="text" name="measurementAbbr' + counter + '" id="measurementAbbr' + counter + '" placeholder="Abbr" size="3">';
var info_mTi = '<input class="toTop" style="margin-top:25px;" type="text" name="measurementTitle' + counter + '" id="measurementTitle' + counter + '" placeholder="Name" size="10"> ';
var info_mD = '<input class="toTop" style="margin-top:25px; margin-left:90px; width:3.5em;" type="number" name="measurementDescimalPlaces' + counter + '" id="measurementDescimalPlaces' + counter + '" min="0" max="4" title="Descimal points" placeholder=".DP">';
$(container + icon + info_span + info_mT + info_mA + info_mTi + info_mD + '</span>' + '</div>').insertAfter("#measurement_container" + (-1 + counter));
});
});
我想要这样的东西(为了更容易阅读,我省略了对象中的一些属性)。
$(document).ready(function(){
var counter = 0;
var measurement_object = {
container : '<div id="measurement_container' + counter + '"
class="col-12 object">',
icon: '<span id="measurement_icon' + counter + '" class="flaticon-glass-
of-water-with-drop" title="Measurement"></span>'
}
function duplicate_object(el){
$(this).insertAfter(el);
}
$("#addMeasurement").on("click", function(){
duplicate_object.call(duplicate_object,"#measurement_container0");
});
});
老实说,如果你在JS中插入了那么多HTML,我会退一步考虑其他选项。这是一种代码气味,通常意味着你以错误的方式处理某件事。
也就是说,真的没有必要为这么简单的功能创建工厂。以下是该功能的核心功能。为了时间起见,我缩写了元素的构建:
$(document).ready(function() {
var count = 0;
$('#addMeasurement').on('click', function() {
var div = document.createElement('div');
// This should be a class, since you're using it more than once.
$(div).insertAfter('#measurement_container');
count++;
});
$('.other-element').on('click', function() {
console.log(count); // Outputs # of elements added
});
});
在页面上描述你真正想做什么,我可以帮你更多的忙。
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何从jquery函数返回变量
- 如何将具有文本类型值的var放入jQuery函数中
- Jquery函数在错误的时间提交
- 锚链接无法使用.slideUp jquery函数
- 重新分解jQuery函数
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何向这个javascript/jquery函数添加参数
- 添加类来触发jquery函数
- 更改智能表中的页面将停止JQuery函数的工作
- 使用每500ms运行一次的jquery函数是个好主意吗
- jQuery函数不能只在一个页面上工作
- 如何将jquery函数链接到vanilla选择器
- 仅在小型设备上调用jQuery函数
- 如何将jquery函数仅应用于大屏幕
- 奇怪的jquery函数行为
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 在jquery函数内部设置来自jquery函数的var;t运行
- 从Jquery函数中获取一个变量