更改 DIV 的内容

Posted

技术标签:

【中文标题】更改 DIV 的内容【英文标题】:Changing a DIV's content 【发布时间】:2013-06-26 08:43:40 【问题描述】:

我想更改我的 DIV。

<div id="main">
       <div id="one"> 
               <div class="red"> ... </div>
               <img class="avatar" src="img/avatar1.jpg"/>
               <span class="name"> John </span>
               <div class="text1">
                       <span class="age"> 16 </span>
                       <span class="sex"> male </span>
               </div>
       </div> 
       <div id="two"> 
               <div class="green"> ... </div>
       </div> 
       .
       .
       <div id="three"> 
               <div class="blue"> ... </div>
       </div> 
</div> 

我需要更改约翰的详细信息。图片和文字。 我知道我可以找到 John 的 DIV:

var item = $('#one');
var itemIndex = $('#main > div').index(item);

现在我可以访问该对象了:

$( "#feeds > div" ).get( itemIndex );

然后去找它的孩子……

$( "#feeds > div" ).get( itemIndex ).children;

我不知道如何开始改变div的内部元素

头像的 img src 名称 属于 text1 类的年龄性别

我也觉得使用索引访问元素很麻烦,我想我可以简单地通过主ID找到它,然后进行操作。

有什么想法吗?

【问题讨论】:

我想你想通过 ajax 从你的服务器获取新信息,我建议使用类似 mustache.js 的东西来促进你的工作......如果你不打算用AJAX,但已经以某种方式处理了 JS 中的所有数据,那么我认为最好的方法是编写所有 html(=所有数据项的相同 div)并仅显示您想要的项目,同时隐藏所有其他项目。 【参考方案1】:

试试$('#one .name').text('whatever text you want');

【讨论】:

【参考方案2】:
var $div  = $( "#feeds > div" ).get( itemIndex );
$div.find('.avatar').prop('src','new src');
$div.find('.name').text('new name');
$div.find('.age').text('new age');
$div.find('.sex').text('new sex');

【讨论】:

【参考方案3】:
var item = $('#one'); //Got John details container
var itemAvatar = item.find ('img'); //Got the Avatar
var itemName = item.find('.name'); //Got the Name div
var itemAge = item.find('.age'); //Got the age div
var itemSex = item.find('.sex'); //Got the age div

不使用.text().html() 方法来更新这些div。 例如:要更改名称,请使用itemName.text('New Name')

要更改图像.. 使用itemAvatar.prop('src', 'next image url')

【讨论】:

所有解决方案中最高效的选择器。 +1 @Vega,您能否解释一下为什么使用find 而不是@danwoods 解决方案? @Ted 没什么特别的.. Danwoods $('#one .name') 将在内部使用.find 我也减少了对$('#one') 的调用,因为它保存在item 中。【参考方案4】:
var johnsDiv = $('#one'); 
johnsDiv.find('img').attr("src", "http://newurl.com"); 
johnsDiv.find('.name').text("New Name"); 
johnsDiv.find('.age').text("17"); 

【讨论】:

【参考方案5】:

为了改变所有:

var newTxt = "yourNewTxt";
var newSrc = "yourNewSource";

$("#main > div").each(function() 
    $(".name",this).text(newTxt);
    $(".avatar",this).attr("src",newSrc);
);

只是改变约翰(div#one):

$("#one .name").text("yournewtext");
$("#one .avatar").attr("src", "yournewsource");

【讨论】:

【参考方案6】:
$( "#main > div" ).each(function()
     $div.find('.avatar').prop('src','new src');
     $div.find('.name').text('new name');
     $div.find('.age').text('new age');
     $div.find('.sex').text('new sex');
);

【讨论】:

以上是关于更改 DIV 的内容的主要内容,如果未能解决你的问题,请参考以下文章

更改 DIV 的内容

更改 div 的内容 - jQuery

更改 div 内容的位置

如何在使用 jquery 更改 div 内容时发出警报

无法更改链接单击时的 div 内容

JQuery toggle/html:更改 div 中的内容