将样式应用于在函数循环中生成的li

时间:2011-07-31 23:49:16

标签: jquery

@nrabinowitz

我现在想知道如何在单击时将地图图标应用于上一节中创建的LI。那可能吗?我在下面尝试了代码,但不起作用。

function(I) {
    // within the scope of this function,
    // "thismarker" will work as expected
    var listid = I + 1;
    $("<li id="+I+"/>")
        .html('<span class="leadId">' + listid + '</span>' + '<div class="leadDataWrapper"><div class="leadName">' + data[I][3] + ' ' + data[I][4] + '</div><div class="leadDate">' + data[I][2] + '</div></div><div class="leadType"><img src="/images/map-' + data[I][1].toLowerCase() + '.png"></div>')
        .click(function(){
            infowindow.close();
            infowindow.setContent(contentString[I]);
            map.setCenter(markers[I].position);
            infowindow.open(map, markers[I]);

        })
        .appendTo("#leadsList ul");  
    google.maps.event.addListener(marker, "click", function(e){
        infowindow.close();
        infowindow.setContent(contentString[I]);
        infowindow.open(map, markers[I]);
        $("#leadsList li #"+I).css({"background-color":"#666666"});
    });
})(I);

3 个答案:

答案 0 :(得分:1)

任何dom元素的id都不能是整数,它应该始终以alpha或特殊字符开头。试试这个

function(I) {
    // within the scope of this function,
    // "thismarker" will work as expected
    var listid = I + 1;
    $("<li id='_"+I+"'/>")
        .html('<span class="leadId">' + listid + '</span>' + '<div class="leadDataWrapper"><div class="leadName">' + data[I][3] + ' ' + data[I][4] + '</div><div class="leadDate">' + data[I][2] + '</div></div><div class="leadType"><img src="/images/map-' + data[I][1].toLowerCase() + '.png"></div>')
        .click(function(){
            infowindow.close();
            infowindow.setContent(contentString[I]);
            map.setCenter(markers[I].position);
            infowindow.open(map, markers[I]);

        })
        .appendTo("#leadsList ul");  
    google.maps.event.addListener(marker, "click", function(e){
        infowindow.close();
        infowindow.setContent(contentString[I]);
        infowindow.open(map, markers[I]);
        $("#leadsList li #_"+I).css({"background-color":"#666666"});
    });
})(I);

答案 1 :(得分:1)

li#I之间有空格。这实际上意味着,让我得到一个li的后代元素,其id为I。删除空格以将其更正为ID为I的li:

$("#leadsList li#"+I).css({"background-color":"#666666"});

但是你无论如何都不需要大部分选择器。只需引用id - 除非你有特殊情况。

$("#"+I).css({"background-color":"#666666"});

答案 2 :(得分:0)

您的某些选择器中缺少引号。

而不是$("<li id="+I+"/>"),请尝试:$('<li id="' + I + '" />')