我如何在jquery appendTo()中引用带有连接变量的id?

时间:2017-07-07 23:27:07

标签: javascript jquery html css concatenation

我使用jquery将html代码附加到div。部分代码使用循环中的连接变量引用div的id。

$(... +
    '<div class="recommendations filter" id="recCards-'+ i +'">' +
    '<div><h5>Recommended Cards</h5></div>' +
        '<ul></ul>' +
    '</div>' +
  ...
 ).appendTo('.someDiv');

然后我试图通过引用“.recommendations”div的ID来将来自另一个循环的代码附加到ul中......

var recCardsList = $(div).attr('id', '.recCards-'"+i+"' ul');

$('<div>'+recCardName+'</div>').appendTo(recCardsList);

我已经尝试了我能想到的每个引号组合,但没有任何东西正确地抓住div来附加新内容

5 个答案:

答案 0 :(得分:1)

实际上,您的代码不会将新创建的内容附加到var recCardsList = $(div).attr('id', '.recCards-'"+i+"' ul'); $('<div>'+recCardName+'</div>').appendTo(recCardsList); ,因为它有一些错误:

.attr('id', '.recCards-'"+i+"' ul')

通过撰写div,您无法从id获取列表,但是,您正在尝试更新其$('#recCards-'+i+' ul')

实际上,如果我们将两个参数传递给 .attr() ,第一个将是目标属性,第二个是新值。

所以要获得div,你应该在你的循环中使用var recCardsList = $('#recCards-'+i+' ul'); $('<div>'+recCardName+'</div>').appendTo(recCardsList); 它将得到相应的列表,所以你的代码看起来像:

$("#someId")

此处使用id="someId"将从页面获取带有htmlwidgets的元素。

答案 1 :(得分:0)

试试这个:

var recCardsList = $(div).attr('id', '.recCards-'+i+' ul');

答案 2 :(得分:0)

假设变量i仍在上述解决方案的函数范围内

'recCards-'+i+' ul'

肯定会有效,正如评论中所说的那样,使用console.log()或alert()我的变量是什么,因为给出了什么,我是空的。

如果它们在同一个函数中你也可以查看这篇文章,将2个循环与appendTo()和append()

结合起来

jQuery append inside appended element

答案 3 :(得分:0)

你很难得到这样的名单。 试试这个:

var recCardsList = $('#recCards-' + i + ' ul');

<div>追加到<ul>也无效。它应该是<li>

$('<li>'+recCardName+'</li>').appendTo(recCardsList);

答案 4 :(得分:0)

试试这个,使用面具并用i替换,

var html = document.getElementsByTagName('html')[0];
var button = document.getElementById('template-button');
var nightmode = true;

function changeTemplate(){
  //change to lighter color if black and vice versa
  if(nightmode){
    html.style.background = "#EEE";
    html.style.color = "#000";
    button.innerHTML = "Nightmode: OFF";
  }else{
    html.style.background = "#111";
    html.style.color = "#0F0";
    button.innerHTML = "Nightmode: ON";
  }
  nightmode = !nightmode;
}
相关问题