0

我遇到了一些奇怪的麻烦(我在数据表中),目标是包含页码的跨度。这是我正在运行的 html。

<span>
    <span class="target_me fg-button ui-button ui-state-default ui-state-disabled">1</span>
    <span class="target_me fg-button ui-button ui-state-default">2</span>
</span>

但是当我将点击事件放在每个号码上并调用时

alert($(this).parent().html())

它呈现上面的整个代码,而不仅仅是初始跨度。这仅呈现页码“2”或“1”。

alert($(this).html())

有人知道为什么会这样吗?

谢谢!

4

4 回答 4

3

你得到的正是你所要求的。如果您只想要 的标签this,请尝试:

alert( $(this).wrap('<div>').parent().html() );
$(this).unwrap();

一种较短的技术涉及在 DOM 之外进行克隆:

alert( $('<div>').append($(this).clone()).html() );
于 2012-09-28T15:34:54.817 回答
1

这是预期的行为。当您使用$(this).parent().html()它时,它会span在您的代码中获得第一个。(下面是大写的那个)

<SPAN>
    <span class="target_me fg-button ui-button ui-state-default ui-state-disabled">1</span>
    <span class="target_me fg-button ui-button ui-state-default">2</span>
</SPAN>

它自然会打印其中的所有 HTML ..

当您调用$(this).html()它时,它会获取您单击的 SPAN。在这种情况下,您会根据单击的数字获得 1 或 2。

于 2012-09-28T15:35:11.540 回答
1

我想你想要这个:

alert(this.outerHTML)
于 2012-09-28T15:38:29.523 回答
0
alert($(this).parent().html())

这将转到<span>标签并警告其中的 HTML。

$(this).html()单击某个项目时,将在单个跨度内呈现 HTML,因此 1 和 2 符合预期。

你想达到什么目的?

于 2012-09-28T15:34:20.567 回答