0

<div class=b>a<div>
<div class=c>b<div>
<div class=d>c<div>
<div class=e>d<div>
<div class=f>e<div>
<div class=g>f<div>

都要执行同一个函数。我是每个选出来,然后写一个函数。感觉这样写好麻烦,一大堆。
请问怎么写比较好。

juqery小白,请大神指点下。
谢谢。

4个回答

1

如果仅仅是为了选中这6个div元素,然后执行同一函数,建议可以为每个div再添加一个类名XXX,然后再利用jQuery的类选择器选择元素,再遍历:

$(".XXX").each(function(index, ele) { 
    //index:选择器的index位置,ele:当前的元素(也可使用 "this" 选择器)
    //...再这里做操作
});
0

先用为每一个div加上一个统一的自定义属性,就用name好了

<div class='b' name='same'>a</div>
<div class='c' name='same'>b</div>
<div class='d' name='same'>c</div>
<div class='e' name='same'>d</div>
<div class='f' name='same'>e</div>
<div class='g' name='same'>f</div>

然后利用jQ的属性选择器

var divs = $('div[name="same"]')

在这里divs是由这些标签组成的类数组,这就意味着你能够通过循环的方式为每一个标签绑定相同的事件,就拿click事件举例

for (var i=0; i<divs.length; i++) {
    divs[i].on('click', function(){
        //执行函数
    })
}

当然啦取出类数组后就有很多方案了,挑一种喜欢的就好了

0

个人认为,给他们加一个统一的类,然后用类选择器是最好的方案。

或者你写的这种情况可以直接使用$('div')

0

关键看你要执行的是个什么样的函数,如果是 $.fn 中定义的函数(即 jQuery 对象的方法),通常是可以直接应用于某个选择器匹配的所有对象的,比如

// 下面这个选择器匹配所有指定了 class 的 div
$("div[class]").on("click", function() {
    console.log($(this).text());  // 输出点击的 DIV 中的文本
});

如果不是 $.fn 中定义方法函数,可以使用循环来依次执行

$("div[class]").each(function() {
    doSomethingWith($(this).text());
    // 依次对每个 div 执行 doSomethingWith(),
    // 将当前 DIV 中的文本作为参数
});

// 注意 jQuery 的 `each()` 函数中的 `this` 即指向参与循环的当前元素

撰写答案

SegmentFault

一起探索更多未知

下载 App