的Javascript
$.each(['#clk','#clk1'], function()
{
$(this).click(function () {
alert("click")
});
});
HTML
<a href="#" id="clk">click me</a>
<a href="#" id="clk1">click me</a>
单击链接时没有警告框。
更新:
我有超过1个身份证。我只展示了一个简化问题的方法。
答案 0 :(得分:2)
您可以进一步将其简化为:
$("#clk").click (function () {
alert("click");
});
答案 1 :(得分:2)
您必须使用String.toString()
来获取String
对象的值。
目前尚不清楚为什么需要一系列选择器,但这里有两个解决方案;
的解决方案// Array of strings to be used as element selectors.
var selectors = ['#element1', '#element2'];
// Using $.each()
$.each(selectors, function() {
// String.toString() returns the value of the String object.
var $this = $(this.toString());
$this.click(function () {
console.log('Clicked element(1) =', this.id || this); // DEBUG
});
});
的替代解决方案
// Using String.join()
$(selectors.join(',')).click(function(event) {
event.preventDefault(); // This is to not follow the link
// Notice that "this" now referes to the current/clicked element
// and not any string value from the "selectors" array.
console.log('Clicked element(2) =', this.id || this); // DEBUG
});
请参阅我的 demo 。
如果你真的不需要选择器数组,我会建议像这样简单的multiple selector;
$('#element1, #element2').click(function() { ... });
答案 2 :(得分:1)
首先,为什么在迭代id时使用foreach
构造?当你使用和id时,应该只有一个具有给定id的元素。所以,这应该没问题:
$("#clk").click(function() {
alert("click");
});
其次,每个迭代一个数组,你的数组为#clk
。只是字符串,没有别的。您的所有函数获取的是两个参数:0' (the index of the element) and the string
#clk`(该索引处的值)。字符串IS未解析为JS对象。
答案 3 :(得分:0)
IMO,解决问题陈述的最简洁方法是:
$("a[id^='clk']").click(function () {
alert("click");
});
^=
选择器将选择id以'clk'开头的所有锚点,并将click函数绑定到所有这些锚点。您可以阅读有关此选择器的更多信息here