jQuery可以运行循环吗?

时间:2011-07-07 20:57:06

标签: jquery loops

我正在使用jQuery来让我的用户快速浏览他们的个人资料。他们的个人资料上有一个收件箱,我让他们使用jQuery删除过去的邮件。问题是每次加载页面时都会有不同数量的电子邮件。如何告诉jQuery管理mail1和mail2以及mail 3等功能,但前提是它们存在。

下面你将看到我为每个运行的jquery,但是需要有一个循环。

$(document).ready(function() {
  $("#del1").click(function() {
    $(".mail1").fadeOut();
  });
});

$(document).ready(function() {
  $("#del2").click(function() {
    $(".mail2").fadeOut();
  });
});

7 个答案:

答案 0 :(得分:4)

为每个删除按钮指定一个公共类和一个data-id属性。您可以将click事件绑定到每个del按钮,然后删除相应的邮件元素。

$(".del").click(function() {
    var id = $(this).attr("data-id");
    $(".mail" + id).fadeOut();
});

答案 1 :(得分:4)

您应该使您的元素和代码更通用。例如,将所有删除链接指定为同一个类,让我们说deleteButton并且所有邮件都指向同一个类,例如mail

然后使用他们的距离来处理它们。也许是这样的:

$(".deleteButton").click(function(){
   $(this).parent().find(".mail").fadeOut();
});

这假设按钮和邮件共享一个共同的父,但即使他们没有,也可以做类似的事情。

答案 2 :(得分:1)

我会尝试这样的事情:

$("[id^='del']").each(function(){
 $(this).click(function(){
  $('.mail'+(/\d+/).exec($(this).attr("id"))).fadeOut();
 });
});

答案 3 :(得分:0)

  1. 将点击事件绑定到所有del 元件。

  2. 点击它们后,获取ID 并用它来获取名称 要隐藏的相关课程。

  3. 使用该类名来执行此操作 fadeOut()

答案 4 :(得分:0)

我认为这样的事情应该有效:

$(document).ready(function() {
  $("[id^=del]").each(function(){
    var e=$(this),m = e.attr('id').match(/^del(\d+)$/);
    if( m ){
      e.click(function(){$('#.mail'+m[1]).fadeOut();});
    }
  });
});

答案 5 :(得分:-1)

$(document).ready(function() {
    if($("#del1").length){
      $("#del1").click(function() {
        $(".mail1").fadeOut();
      });
    }
    if($("#del2").length){
      $("#del2").click(function() {
        $(".mail2").fadeOut();
      });
    }
    ....
});

答案 6 :(得分:-1)

Jquery允许你选择'startswith'你也可以使用jquery的正则表达式选择器,但我认为这会让你接近:

$(document).ready(function() {
  $('*[id^="del"]').click(function() {
    $(this).closest('[class^="mail"]').fadeOut();
  });
});

这假设class =“mail ...”在id =“del ...”的某个时刻是一个祖先

由于我们不知道你的确切HTML我喜欢最近而不是父,因为父认为del是直接在邮件中的一层。