0

我想更改事件附加到的元素。在下面的示例中,我尝试将边框从 2px 增加到 10 px,但没有成功。

完整的最小示例(查找 FAILS 行):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Example</title>
    <style>P { margin-bottom: 40%; }</style>
  </head>
  <body>
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    <p>Paragraph 3</p>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script>

$('p').each(function (i) {
    $(this).css('border', '2px solid');

    $(window).scroll(function (event) {
        console.log('scroll triggered, but nothing happens!');
        event.target.css('border', '10px solid'); // FAILS with TypeError: event.target.css is not a function
    });
})

    </script>
  </body>
</html>
4

2 回答 2

1

明确选择要应用 css 的元素。

$(window).scroll(function (event) {
        console.log('scroll triggered, but nothing happens!');
        $('body').css('border', '10px solid'); // FAILS with TypeError: event.target.css is not a function
    });

即使您使用event.target,也必须将其包装在 jQuery 集合中,然后才能使用该.css方法:

$(event.target).css...

问题在于将 css 应用于窗口不起作用;您只能将 css 应用于HTMLElement对象(从文档中找到)。

于 2012-11-20T12:04:41.733 回答
1

您 event.target 是窗口本身,因此您不能以这种方式将 css 应用于 p 标签,尽管您可以这样做:http: //jsbin.com/abebof/1/edit

$('p',event.target).css('border', '10px solid');
于 2012-11-20T12:16:08.050 回答