学习时遇到的jQuery问题(初学者)

时间:2012-07-30 14:36:20

标签: jquery

  1. 这个例子中的domEle是什么?我可以在jQuery.com中看到一个解释--jQuery.each(集合,回调(indexInArray,valueOfElement)),但仍然很难理解什么是“valueOfElement”?任何人都可以为我清楚一点吗?

    $("button").click(function () {
      $("div").each(function (index, domEle) {
        $(domEle).css("backgroundColor", "yellow"); 
        if ($(this).is("#stop")) {
          $("span").text("Stopped at div index #" + index);
          return false;
        }
      });
    });
    
  2. 如果我这样写:$("input[name='newsletter']").next().text(" is newsletter"); jquery将只找到完全匹配,如果我这样写:$("input[name$='newsletter']").next().text(" is newsletter"); jquery将找到完全匹配,并让我们说出“newsletters”的价值

  3. 作者使用此代码:

    $(document).mouseup(function(e) {
                if($(e.target).parent("a.signin").length==0) {
                    $(".signin").removeClass("menu-open");
                    $("fieldset#signin_menu").hide();
                }
            });      
    

    在用户按下文档上的任何其他位置时隐藏下拉列表。任何人都可以评论这一行if($(e.target).parent("a.signin").length==0) {因为我不完全理解我们在这里做了什么。原文如下:http://aext.net/2009/08/perfect-sign-in-dropdown-box-likes-twitter-with-jquery/

  4. 我应该注意的默认方法调用?

  5. 在其中一个教程中,我发现了这样的评论:

    “最后,如果我们在CSS中没有包含边距,CSS方法调用的结果是auto,它将无法正确解析,因此我们需要将数字”auto“替换为数字0”

    var top = $('#comment').offset().top - parseFloat($('#comment').css('marginTop').replace(/auto/,0));
    

    任何人都可以对此发表评论,因为我不完全明白他在这里做了什么。

    此处的原创文章:http://jqueryfordesigners.com/fixed-floating-elements/

2 个答案:

答案 0 :(得分:1)

1)它是迭代元素 - 当前由each处理的元素。它会自动转发给回调。 (我不喜欢这个模型;我个人更喜欢在$(this)回调中使用each

2)第一个找到name属性正好为newsletter的元素,而后者找到name属性 {{1}结尾的元素}}。 newsletter的使用是从正则表达式语法借用的。 (正则表达式是一个完全独立的主题)。

3)这是一个事件委托的例子(虽然不是很好的一个 - jQuery可以比这个例子显示的更有效地处理它)。事件委托绝对值得关注。

你提到的那一行会询问事件的触发元素 - 触发事件的元素 - 并根据条件检查它的父元素。

4)我甚至不会在这一点上花费任何精力 - 它非常不标准并且针对特定用例进行了本地化。

答案 1 :(得分:0)

1。)$(“div”)将选择页面上的每个div。每个都将迭代所有这些div。对于每次迭代,domEle将是对循环当前迭代的div的引用。

2。)^ =是你要找的东西,^ =搜索以给定字符串开头的所有内容。 $ =使用给定字符串搜索所有结尾:http://api.jquery.com/category/selectors/

3。)e.target是用户点击的地方。 .parent(“a.signin”)。length == 0如果是带有类.signin的锚,则选择父级。检查长度等于零等于询问是否选择了任何内容。所以基本上如果用户没有在类登录的锚点内点击,那么就做点什么。

4。)$('#comment')。offset()。top从#comment元素的顶部获取偏移量。 parseFloat($('#comment')。css('marginTop')。replace(/ auto /,0))从元素顶部获取边距。如果保证金设置为“自动”,则认为保证金为0. Parsefloat确保将其作为数字处理,然后从顶部偏移量中减去。这是自定义代码,而不是您经常使用/需要的代码。