我有一个列表,当我将鼠标悬停在它们上面时,我希望更改其内容。为什么这不起作用?我可以使用id作为选择器,它会触发悬停功能但是列表项都会改变颜色,而不仅仅是我想要的颜色。我不能使用个人id,因为它们是动态创建的。这是相关jquery的snipet。
for (var i=0;i < count; i++)
{
if (i == 4) {break;}
var elemId = resultsTemp[i].split('.')[0];
var elemName = resultsTemp[i].split('.')[1];
addToList += '<li id="'+elemId+'" class= "profResultsName">'+elemName+'</li>';
}
$("#professorDropDown").append(addToList);
这是另一个
$(".profResultsName").hover(function()
{
$(this).css("color","white");
},
function ()
{
$(this).css("color","black");
});
这是相关的html。
<ul id="professorDropDown" class="addContainer"></ul>
答案 0 :(得分:1)
看起来=
中有两个问题class"profResultsName"
丢失,动态元素处理
for (var i=0;i < count; i++)
{
if (i == 4) {break;}
var elemId = resultsTemp[i].split('.')[0];
var elemName = resultsTemp[i].split('.')[1];
addToList += '<li id="'+elemId+'" class="profResultsName">'+elemName+'</li>';//= missing after class
}
$("#professorDropDown").append(addToList);
然后
$('#professorDropDown').on('mouseenter', 'li.profResultsName', function(){
$(this).css('color', 'red')
}).on('mouseleave', 'li.profResultsName', function(){
$(this).css('color', 'green')
})
演示:Fiddle
答案 1 :(得分:1)
好吧,你应该使用:
$("#professorDropDown").on('hover', 'li', function () {
$(this).css("color","white");
});
因为,您正在生成列表项,而不是页面加载。 我建议使用类而不是JS直接应用CSS样式。
答案 2 :(得分:1)
请注意,您为ul
元素添加了一个监听器,而不是li
。
由于li是动态生成的,请使用以下代码:
for (var i=0;i < 4; i++) {
$(".profResults").append('<li class"profResultsName">item</li>');
listen();
}
function listen() {
$(".profResults li").hover(function() {
$(this).css("color","white");
}, function () {
$(this).css("color","black");
});
}