代码之家  ›  专栏  ›  技术社区  ›  Rich

双击元素时循环jQuery中的元素

  •  2
  • Rich  · 技术社区  · 14 年前

    我是jQuery和Javascript新手。我试着做一个按钮,我可以双击,然后循环通过网页中的所有元素与某个类和褪色。

    目前,我正在尝试:

    $(".fadeall").dblclick(function() {
        $("div.section").each(function(idx,item) {
            item.fadeTo(25,inactiveOpacity);
        });
    });
    

    each 呼叫未被触发。

    div.section

    2 回复  |  直到 14 年前
        1
  •  2
  •   user113716    14 年前

    假设HTML有 <div> 类中的元素 section item 在jQuery对象中。

    $(".fadeall").dblclick(function() {
        $("div.section").each(function(idx,item) {
               // Wrapped "item" so you have access to jQuery methods
            $(item).fadeTo(25,inactiveOpacity);
        });
    });
    

    项目 是DOM元素,它需要用jQuery对象包装,这样它就可以访问 .fadeTo()

    另一种方法是 this .each() ,它也将引用DOM元素。

    $(".fadeall").dblclick(function() {
        $("div.section").each(function() {
               // Wrapped "this" so you have access to jQuery methods
            $(this).fadeTo(25,inactiveOpacity);
        });
    });
    

    此外,请确保在运行代码之前加载了DOM:

       // Wrapping code like this ensures that the DOM elements will be
       //    loaded before your code runs.
    $(function() {
        $(".fadeall").dblclick(function() {
            $("div.section").each(function() {
                   // Wrapped "this" so you have access to jQuery methods
                $(this).fadeTo(25,inactiveOpacity);
            });
        });
    });
    

    jQuery's .ready() method ,这将确保在元素可用之前代码不会运行。

        2
  •  4
  •   Nick Craver    14 年前

    因为DOM元素没有 .fadeTo() 函数,需要将循环的元素包装起来( item )在jQuery对象中,如下所示:

    $(item).fadeTo(25,inactiveOpacity);
    

    this 同样有效,例如:

    $(".fadeall").dblclick(function() {
      $("div.section").each(function() {
        $(this).fadeTo(25,inactiveOpacity);
      });
    });