发生事件时更改元素

时间:2012-11-20 12:01:19

标签: jquery

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

完成最小例子(查找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>

2 个答案:

答案 0 :(得分: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个对象(可从文档中找到)。

答案 1 :(得分:1)

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

$('p',event.target).css('border', '10px solid');