伙计们,我只是一个初学者,我不确定要如何解决我提出的问题。 我正在研究一个小插件,它可以重新设置所有HTML 输入的样式。我遇到的问题是每页下拉列表的多个实例,无论我在哪个<\ select>上单击最后一个<\ select>都会做出反应(显示下拉菜单)。
$(function () { // Document ready
test(document.getElementsByClassName("js_select"));
});
function test(selects) {
var i = 0
var l = selects.length;
for (i; i < l; i++) {
var thisSelect = selects[i];
var xVariable = i * 10;
$(thisSelect).click(function () {
onDivClick.apply(this, [xVariable]);
});
}
function onDivClick(variable) {
console.log(variable);
}
}
因此,在这里,我做了一个小例子来复制我的代码并显示正在发生的事情。我确实知道,在循环的每次迭代中,“ xVariable” 的值都会发生变化,并且每个“选择”的click事件仅会拾取“ xVariable”的最后一个值。
如何进行调整,以便当我单击第一个时,在控制台中显示“ 0”,下一个选择显示“ 10”,依此类推...?
是否有一种无需对象注释即可解决此问题的方法?
谢谢
答案 0 :(得分:0)
您可以使用each
遍历选择,然后像这样绑定click
事件:
(function () {
$(".js_select").each(function(idx) {
$(this).on("click", function() {
console.log(idx * 10);
});
});
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="" id="" class="js_select">
<option value="">-- Select a Value --</option>
<option value="0">test</option>
</select>
<br>
<select name="" id="" class="js_select">
<option value="">-- Select a Value --</option>
<option value="0">test</option>
</select>
<br>
<select name="" id="" class="js_select">
<option value="">-- Select a Value --</option>
<option value="0">test</option>
</select>
我添加了一个选择示例列表,以使其更容易理解它们的工作原理。
答案 1 :(得分:0)
或者没有糟糕的丑陋jQuery
public static void write(OutputStream out, ArrayList<byte[]> buffer) throws IOException {
for (byte[] packet: buffer) {
out.write(packet);
}
}
// You could also use querySelectorAll
let selects = document.getElementsByClassName('js_select');
// Make sure there are selects
if(selects) {
for(let i = 0; i < selects.length; i++) {
let select = selects[i];
select.addEventListener('click', function() {
console.log(i * 10);
});
}
}