3

新手问题:

我有一个带有单个 p 元素的网页。我以为我可以访问事件中的 p.html() ,但不能。有没有办法将事件内的元素作为 jQuery 元素访问?

<script src="Scripts/jquery-1.8.2.js"></script>      
    $(function () {
        $("p").first().bind('click',null, function (event) {
            this.innerHTML = "this works";
            this.html('this does not');
        });
    }
    );
4

6 回答 6

7

thisin handler function 是您的 DOM 元素..它没有.html功能.. 将其包装$以使其成为 jQuery 对象并执行.html

$(this).html('this does work now');

完整代码:

$(function () {
    $("p").first().bind('click',null, function (event) {
       this.innerHTML = "this works";
       $(this).html('this does work now');
    });
});
于 2012-10-17T19:34:07.203 回答
5

在您的上下文中使用this时,它是 DOM 元素。您可以使用本机方法,例如innerHTML. html是一个 jQuery 方法,它需要你使用$(this).html().


参考:

于 2012-10-17T19:34:36.017 回答
1

当您使用this时,它是一个DOM对象,“html”是jQuery对象的方法。

jQuery object在使用 any 之前,您需要将其转换为jQuery api. 要转换它,只需使用 $( DOM Object) 构造。

现在这将起作用 -

$(function () {
    $("p").first().bind('click',null, function (event) {
        this.innerHTML = "this works";
        $(this).html('this works !!!)');
    });
}
);

根据jQuery API -

$()— 在 DOM 中搜索与提供的选择器匹配的任何元素,并创建一个引用这些元素的新 jQuery 对象:

$('div.foo');

div.foothis您的情况的DOM元素。

于 2012-10-17T19:38:20.583 回答
0

修改后的代码:这不是一个 jQuery 对象。

    $(function () {
        $("p").first().bind('click',null, function (event) {
            this.innerHTML = "this works";
            $(this).html('this will work now');
        });
    }
    );
于 2012-10-17T19:34:20.840 回答
0

this是 DOM 元素,它不是 jquery 对象。所以使用$(this)

  $(this).html('this now works');
于 2012-10-17T19:34:52.170 回答
0

试试这个(nned jQuery 对象):

$( this ).html()
于 2012-10-17T19:34:58.043 回答