在jQuery中包含跨度的目标问题

时间:2012-09-28 15:31:14

标签: javascript jquery datatables

我遇到了一些奇怪的麻烦(我在数据表中),目标是包含页码的范围。这是我正在运行的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>

但是当我将click事件放在每个号码上并打电话

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

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

alert($(this).html())

任何人都知道为什么会这样?

谢谢!

4 个答案:

答案 0 :(得分:3)

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

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

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

alert( $('<div>').append($(this).clone()).html() );

答案 1 :(得分:1)

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

<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 ..

答案 2 :(得分:1)

我想你想要这个:

alert(this.outerHTML)

答案 3 :(得分:0)

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

这将转到<span>标记并提醒其中的HTML。

$(this).html()当单击某个项目时,会在单个范围内呈现HTML,因此1和2会像预期的那样呈现。

你想要达到什么目标?