javascript - 使用 this(),不明白为什么我需要定义一个对象才能使其工作

标签 javascript jquery

在下面的代码中,我使用 jquery 查找我单击的元素“this”,无论我单击什么,我都希望“this”背景更改为红色。但是,只有当我在更改颜色线或“我点击了什么”线内定义标签时,它才有效。

为什么下面的代码不会将我点击的任何内容的颜色更改为红色?

<script>


$(document).ready(function() {

   $(this).click(function() {

      $(this).css("background-color","red");
   });

});

</script>

最佳答案

如果您只想要 <h1><p>不直接使用 if 的元素语句,使用适当的选择器,这将在每个元素上设置它。

$('h1, p').click(function () {
    $(this).css('background-color', '#F00');
});

如果需要,请将代码包装在 $(function(){}) 中call,它是 $(document).ready(function(){}) 的简写.

但是,为了不创建如此多的事件监听器,您可以使用绑定(bind)到文档的单个事件监听器并通过过滤结果来处理该事件:

$(document).click(function () {
    $(event.target).filter('h1, p').css('background-color', '#F00');
});

正如 Felix 所指出的,这样做会更像 jQuery,尽管这实现了几乎相同的效果:

$(document).on('click', 'h1, p', function () {
    $(this).css('background-color', '#F00');
});

关于javascript - 使用 this(),不明白为什么我需要定义一个对象才能使其工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21963602/

相关文章:

javascript - 每次加载时按内容设置 iframe 高度

javascript - jQuery .draggable() 不拖动或拖动太多卡片

javascript - 向所有仅具有 javascript/jquery 和 css 类的元素添加按钮/文本

javascript - 如何根据不同的键将 JSON 数组重新格式化为另一种格式 "grouping"

javascript - Canvas 在圆圈中移动对象

javascript - 使用 Jquery 将父元素附加到子元素

javascript - jQuery:检查每个可见文本框的值

javascript - 数据表中的多个子行,来自asp.net core中sql server的数据

jquery - 如何删除(或隐藏)jqgrid 中的标题栏?

javascript - 如何在 Asp.net MVC View 中嵌入 javascript