Jquery динамический селектор на клик - PullRequest
1 голос
/ 02 августа 2010

Мне нужны функции щелчка «i» в зависимости от неизвестной длины переменной:

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» раз, он работает отлично.

Как я могу реализовать эту функцию, используя цикл?

Большое спасибо

Ответы [ 3 ]

3 голосов
/ 02 августа 2010

Цикл здесь не нужен, просто используйте лучший селектор, например, 'начинается с' селектора

$("a[id^='group_link_']").click(function() {
    ///do something with $(this) - which will be each element
});
0 голосов
/ 02 августа 2010

Спасибо 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(); });
    });
0 голосов
/ 02 августа 2010

ИСПРАВЛЕНО:

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

        });        
    } else {
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...