在jQuery / Javascript中生成的一些问题

时间:2011-10-22 16:25:30

标签: javascript jquery checkbox jquery-autocomplete

我在javascript中不是很好,所以我需要一些帮助。我开始使用jQuery Autosuggest插件,它允许我添加标签(有点像stackoverflow标签)。我想要做的是,为每个选定的标签生成一个复选框。出于这个原因,我修改了插件,因此它将每个标记名称包装在<span class="tag tag_name">tag_name</span>中,因此更容易获取标记,我喜欢这样:$(".tag").attr("class").replace("tag ", "");。无论如何,我已经编写了一个生成复选框的脚本,但问题是,它只为第一个标记生成一个复选框,并且每2秒生成一次。另外,我担心剧本在演奏上可能有点太多了?这是脚本:

$(document).ready(function(){
    var done = {};
    $("input[type=text]").autoSuggest("get.php", {searchObjProps:"name", selectedItemProp:"name", asHtmlID: "1"});
    var timer = setInterval(function(){
        if(!done[city]){
            var city = $(".mestoJe").attr("class").replace("mestoJe", "");
            done[city] = true;
        }
        var nr = 0;
        $.each(done, function(i, j){
            if(j != 2){
                var tmp = $('<input type="checkbox" value="'+nr+'" name="city[]">'+i+'<br />');
                $("#checkboxes").append(tmp);
                j = 2;
                nr++;
            }
        });
    },2000);

});

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

在你的剧本的这一行:

var city = $(".mestoJe").attr("class").replace("mestoJe", "");

您正在调用.replace()删除类名,但不会将其分配回任何内容,因此实际上没有任何更改。 .replace()返回被替换的字符串 - 它不会修改传入的字符串。

要实际更改类名,并在下次定时器触发时前进到下一个城市,您必须使用以下内容:

var firstCity = $(".mestoJe").get(0);
var city = firstCity.className = firstCity.className.replace("mestoJe", "");

如果您不更改班级名称,那么这行代码每次都会生成完全相同的结果和完全相同的城市名称:

var city = $(".mestoJe").attr("class").replace("mestoJe", "");

此外,你正在开始一个2秒钟的内部计时器,并且从不停止它,所以它会永远持续下去。

您也在引用:

if(!done[city]){
在您定义city之前