2010-08-01 108 views
1

動態選擇我需要的「i」點擊功能取決於可變長度未知:jQuery的點擊

for(i=0;i<=unknownLength;i++) 
{$("#group_link_"+i).click(function() 
{//asynchronous call to a Web Service for the specific content on group_link_i div, here I will use $("#group_link_"+i).val()} 
);} 

此代碼不能正常工作。但是,相同的代碼,如果我刪除循環並複製「i」次以上的代碼,它的工作就完美了。

如何使用循環來實現此功能?

非常感謝

+0

你是什麼意思與*不工作*?如果在回調中使用'$(「#group_link _」+ i).val()',那麼這是一個關閉問題。 – 2010-08-01 20:33:26

+0

是的,我在裏面使用$(「#group_link _」+ i).val()。你的意思是「關閉問題」?非常感謝 – 2010-08-02 09:58:37

回答

3

一個循環在這裏沒有必要,只需用一個更好的選擇,如'starts with' selector

$("a[id^='group_link_']").click(function() { 
    ///do something with $(this) - which will be each element 
}); 
+0

最後回覆。非常感謝 – 2010-08-01 20:45:02

+1

@Dani - 您應該編輯您的原始問題。答案應該是問題的答案,而不是進一步的問題。 – 2010-08-01 22:07:08

0

FIXED:

for(var i = 0;; i++) { 
    var element = $("#group_link_" + i); 
    if (element.length) { 
     element.click(function() { 

     });   
    } else { 
     break; 
    } 
} 
0

感謝Naspinski。我按照你告訴我的理由解決了這個問題。非常感謝!。 100%的工作:

 $("a[id^='group_link_']").click(function() 
    { 
      $(this).parent().next().empty(); 

      $().SPServices({ 
       operation: "GetUserCollectionFromGroup", 
       groupName: $(this).text(), 
       async: false, 
       completefunc: processUsersGroups 
      }); /*close().SPServices({ */ 

      function processUsersGroups (xData, status) 
      { 
       var i = 0; 
       var append_data = ""; 
       var email_user=""; 
       $("a[id^='group_link_']").parent().next().append("<ul class=\"contact_list\"><div id=\"paginator\" class=\"paginator_accordion\">"); 
       $(xData.responseXML).find("[nodeName=User]").each 
       (
        function() 
        { 
         if ($(this).attr("Email")!="") 
         { 
          email_user=$(this).attr("Email"); 
         } 
         else 
         { 
          email_user="<i>Not Available in Active Directory</i>"; 
         } 

         append_data = append_data +"<li class=\"contact\"><div class=\"user\"></div><div class=\"user_name\">"+$(this).attr("Name")+"</div><div class=\"mail\"></div><div class=\"user_mail\">"+email_user+"</div><div class=\"thick\"></div><div class=\"minus\"></div><div class=\"plus\"></div></li>"; 
         i++; 
        } 
       )   
       $("a[id^='group_link_']").parent().next().append(append_data); 
       if(i==0) 
       { 
        $("a[id^='group_link_']").parent().next().append("There's no users available in this group"); 
       } 
       else 
       { 
        $("a[id^='group_link_']").parent().next().append("</div></ul>"); 
       } 
      } 
      $(function(){ $("#paginator").pagination(); }); 
    });