【问题标题】:How to wrap dynamically selected ids using jquery or javascript如何使用 jquery 或 javascript 包装动态选择的 id
【发布时间】:2011-08-27 08:51:29
【问题描述】:

我正在 Google Blogger 中开展一个项目。首先我想解释一件事。

在 blogger 中,每个创建的帖子都有一个由 blogger 本身分配给它的唯一 ID。可以使用 Blogger JSON 检索此 ID。因此,我使用 JSON 检索了最近四篇文章的 ID。

我想使用 JQuery 或 Javascript 将前四个 id 容器包装在 DIV 容器周围。

问题是,当我在选择器 $ 中绝对使用这些 id 并使用 wrapAll() 函数时,id 容器会被包裹起来。

但正如我所说,我正在使用 JSON 来获取容器 id,所以值ID 存储在变量中,当我使用这些变量作为 wrapAll() 函数的选择时,它不起作用。

我有这两种情况的演示,可以通过访问此博客 http://youblog-demo.blogspot.com/ 并使用 firebug 控制台运行这些代码来查看。

使用绝对容器 ID 时的情况 1

var script = document.createElement("script");
script.src = "http://youblog-demo.blogspot.com/feeds/posts/default?alt=json&callback=hello";
document.body.appendChild(script);
function hello(json){
if(json.feed.entry.length>4){
var post_num=4;
var id_coll = new Array();
for(i=0; i<post_num; i++){
    var ids = json.feed.entry[i].id.$t;
    var post_id = ids.substring(ids.indexOf("post-"));
    var only_id = post_id.substring(5);
    id_coll[i] = only_id;
}
$("#3337831342896423186,#123892177945256656,#9095347670334802803,#2525451832509945787").wrapAll('<div>');
}
};


使用变量选择容器时的情况 2

var script = document.createElement("script");
script.src = "http://youblog-demo.blogspot.com/feeds/posts/default?alt=json&callback=hello";
document.body.appendChild(script);
function hello(json){
if(json.feed.entry.length>4){
    var post_num=4;
    var id_coll = new Array();
    var front_name = "#";
    for(i=0; i<post_num; i++){
        var ids = json.feed.entry[i].id.$t;
        var post_id = ids.substring(ids.indexOf("post-"));
        var only_id = post_id.substring(5);
        id_coll[i] = only_id;
    }
var joined_id_0 = String.concat(front_name,id_coll[0]);
var joined_id_1 = String.concat(front_name,id_coll[1]);
var joined_id_2 = String.concat(front_name,id_coll[2]);
var joined_id_3 = String.concat(front_name,id_coll[3]);
$(joined_id_0,joined_id_1,joined_id_2,joined_id_3).wrapAll('<div>');
}
};


因此,当我使用情况 2 代码时,它不起作用,但情况 1 代码工作正常。谁能帮我解决这个问题

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-selectors blogger


    【解决方案1】:

    您需要将选择器作为字符串传递,而不是参数列表;

    $(joined_id_0+', '+joined_id_1+', '+joined_id_2+', '+joined_id_3).wrapAll('<div>');
    

    或者更好的是,全部替换:

    var joined_id_0 = String.concat(front_name,id_coll[0]);
    var joined_id_1 = String.concat(front_name,id_coll[1]);
    var joined_id_2 = String.concat(front_name,id_coll[2]);
    var joined_id_3 = String.concat(front_name,id_coll[3]);
    $(joined_id_0,joined_id_1,joined_id_2,joined_id_3).wrapAll('<div>');
    

    与:

    $('#'+id_coll.join(', #')).wrapAll('<div>');
    

    并删除该行:var front_name = '#';

    【讨论】:

    • 上面的答案解决了,但你的回答解释了我的问题,所以非常感谢你
    【解决方案2】:

    您必须连接 ID,用逗号分隔,如 #id1, #id2, ...

    你可以这样做:

    [joined_id_0,joined_id_1,joined_id_2,joined_id_3].join(',')
    

    整行:

    $([joined_id_0,joined_id_1,joined_id_2,joined_id_3].join(',')).wrapAll('<div>');
    

    如果不起作用,请检查 [joined_id_0,joined_id_1,joined_id_2,joined_id_3].join(',') 返回的内容(alert() 它,或使用 console.log)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 2015-11-01
      • 2023-03-11
      相关资源
      最近更新 更多