我知道这段代码错了。当我将鼠标放在网页的某个段落上时,我希望所有<p>
元素在我的HTML中获得颜色cornflowerblue
。
我使用其他方式做了同样的事情,但我怎么能用on()
做到这一点?
jQuery:我知道还有其他方法可以做到这一点,但我想尝试使用on()
。我为这个功能命名,但我很确定这不正确。
ChangeColorOnHover("p")
$(document).ready(function ChangeColorOnHover(elementtype) {
$element = $(elementtype)
$element
.on({
mouseenter: function (event) {
var $this = $(this)
$this.addClass(".IsHover")
}
})
.on({
mouseleave: function () {
var $this = $(this)
$this.removeClass(".IsHover")
}
})
})
CSS:
.container {
font-family: sans-serif;
font-weight: 100;
max-width: 960px;
margin: 20px auto;
}
p {
color: tomato;
margin-top: 2em;
}
p.IsHover{
color:cornflowerblue;
}
HTML :( csstestview是外部CSS文件的名称)。 HTML正在认识到CSS文件,我已经探测过了。
@Styles.Render("~/bundles/csstestview")
<div id="firstdiv" class="divvv">
<img src="/images/Soccer.jpg" width="60" height="60" alt="soccer icon" />
<p id="pp" class="pa"> this is a <em>paragraph</em></p>
<p>paragraph testing</p>
</div>
答案 0 :(得分:2)
$(function () {
var ChangeColorOnHover = function(elementtype) {
//Select all elements
$element = $(elementtype);
//Set up event handlers
$element.on('mouseenter', function() {
//No need for . when adding a class
$(this).addClass("IsHover");
});
$element.on('mouseleave', function() {
//No need for . when removing a class
$(this).removeClass("IsHover");
});
};
//Call your function
ChangeColorOnHover("p");
});
答案 1 :(得分:1)
首先:使用addClass
时,您不需要将.
放入.isHover
,只需添加isHover
。如果那不是&#39;你可以尝试做的工作:
$(event.target).addClass("isHover")
答案 2 :(得分:1)
当前的jQuery v2.2.3具有.mouseenter()和.mouseleave()处理程序。 根据您的代码,可以按如下方式使用:
$element.mouseenter( function() { $(this).addClass('IsHover'); } );
$element.mouseleave( function() { $(this).removeClass('IsHover'); } );
或者你可以让CSS为你做这一切。作为CSS中的一个例子,您可以:
p:hover { color: cornflowerblue; }
答案 3 :(得分:1)
您应该在语句(...)
之外定义命名函数,并且只使用.on()
一次:
function ChangeColorOnHover(elementtype) {
var $element = $(elementtype);
$element.on({
mouseenter: function (event) {
var $this = $(this)
$this.addClass("IsHover")
},
mouseleave: function () {
var $this = $(this)
$this.removeClass("IsHover")
}
})
};
$(document).ready(function(){
ChangeColorOnHover("p")
})
.container {
font-family: sans-serif;
font-weight: 100;
max-width: 960px;
margin: 20px auto;
}
p {
color: tomato;
margin-top: 2em;
}
p.IsHover{
color:cornflowerblue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
答案 4 :(得分:1)
你可以通过纯粹的CSS来实现这个目标。但这正是你要找的。 jsfiddle demo
$(function() {
$(document).on('mouseenter', 'p', function() {
$(this).addClass('IsHover');
}).on('mouseleave', 'p', function() {
$(this).removeClass('IsHover');
});
});
如果您想使用函数执行此操作,则应在$(function(){});
之外声明函数,然后在网站加载时使用内部函数。
function changeColorOnHover(element) {
$(document).on('mouseenter', element, function() {
$(this).addClass('IsHover');
}).on('mouseleave', element, function() {
$(this).removeClass('IsHover');
});
}
$(function() {
changeColorOnHover('p');
});