3

我有一个包含以下 HTML 片段的转发器:

<div id='parent'>
    <div id='child1'/>
    <div id='child2'>
         <script type="text/javascript" src="script.js"></script>
    </div>
</div>

我想使用 script.js 中的函数选择标记为“父”的 div,并设置 id 为“child1”的 div 的内部 HTML。

我的最终 html 应该是这样的:

<div id='parent'>
    <div id='child1'>This inner text was set by jQuery</div>
    <div id='child2'>
        <script type="text/javascript" src="script.js"></script>
    </div>
</div>

我如何使用 jQuery 来做到这一点?

4

3 回答 3

2
$('#parent').children('#child1').html('html goes here');
于 2009-07-30T15:22:04.700 回答
2

首先,您不能在转发器中以这种方式编写 HTML。您不能将相同的 ID 分配给页面上的多个元素。您的 HTML 将需要使用类进行识别,如果您完全识别它们的话。

<div class="parent">
  <div class="child1"><div>
  <div class="child2">Click Me<div>
</div>

script 标签中的函数无法知道它们在 DOM 中相对于其他所有内容的位置。您需要将函数调用绑定到某个元素,以便能够导出与其相关的 DOM 关系。最简单的方法是使用 jQuery(或其他框架)向元素添加一些处理程序。

$(function() {
    $('.child2').click( function() {
        $(this).parent().find('.child1').html( 'some html' );
    });
});

上面将为每个带有类的 DIV 添加一个单击处理程序child2,当它被单击时,会发现它是父 DIV(请注意,该类在父级上是不必要的),然后是正确的子级,其 HTML 要根据其类更新。 另外,请注意,上面的脚本只需要添加到页面一次,而不是每个转发器项目一次。

于 2009-07-30T15:24:31.840 回答
0

你的问题没有多大意义。你可以这样做:

$("#child1").html("blah");

您不需要对#parentor的引用this

但假设情况并非如此,有多种方法可以找到相对于 的元素this

$(this).children("#child1")

或者

$(this).find("#child1") // descendant, not just child

或者

$("#child1", this) // descendant, not just child
于 2009-07-30T15:31:44.480 回答