2010-08-01 4 views
1

мне нужно «я» нажмите функции в зависимости от переменной неизвестной длины: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()', это проблема с закрытием. –

+0

Да, я использовал $ ("# group_link _" + i) .val() внутри. Что вы подразумеваете под «проблемой закрытия»? Большое спасибо –

ответ

3

петля не нужен здесь, просто использовать лучший селектор, как 'starts with' selector

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

Ответил в конце. Большое спасибо –

+1

@ Dani - Вместо этого вы должны изменить свой исходный вопрос. Ответы должны быть ответом на вопрос, а не на дополнительные вопросы. –

0

ИСПРАВЛЕНО:

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(); }); 
    }); 
Смежные вопросы