gpt4 book ai didi

javascript - jQuery 无法将类添加到动态添加的内容

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:49 25 4
gpt4 key购买 nike

我知道,如果我动态添加内容,我必须使用 on() 为父元素使用事件处理程序。但是当我对动态添加的内容使用 addClass 时,该类立即消失。

这是 HTML 的相关部分(只是为了确保我没有遗漏拼写错误):

<div id="training_management_categories_items">
<ul style="list-style: none; margin-left:0px; margin-top:0px; padding:0px;" id="training_management_categories_items_ul">
</ul>
</div>

这是添加动态元素的代码:

function GetCategories()
{
var url = './ajax/training_management_data.php';
$('#training_management_categories_items').html('<ul style="list-style: none; margin-left:0px; margin-top:0px; padding:0px;" id="training_management_categories_items_ul"></ul>');
$('#training_management_categories_items_ul').append(' \
<li class="training_management_categories_list"> \
<a href="" class="training_management_categories_list_a" id="training_management_categories_list_a_all">All</a> \
</li> \
');
$.ajax({
url: url,
type: "POST",
data: "action=get_categories",
dataType: 'json',
success: function (data) {
$.each(data, function(index, data) {
$('#training_management_categories_items_ul').append(' \
<li class="training_management_categories_list"> \
<a href="" class="training_management_categories_list_a" id="training_management_categories_list_a_'+data.id+'">'+data.name+'</a> \
</li> \
');
});
}
});
}

$(document).ready(function() {
GetCategories();
});

但是当我单击该元素时,该类被添加了大约 0.1 秒(必须将 .categories_selectedbackground-color 切换为红色才能看到它)并且我不明白为什么。

$('#training_management_categories_items').on('click', '.training_management_categories_list_a', function () {
$(this).addClass('categories_selected'); // DOESN'T WORK
alert( $( this ).text() ); // THIS WORKS
});

因此,如果我单击其中一个动态创建的元素,它会显示文本(例如“All”,它不是从 php 中获取的,但你明白了),但不会永久添加该类。

只是为了让我绝对确定我没有错过任何非常非常愚蠢的东西,这是 CSS:

a.training_management_categories_list_a {
text-decoration:none;
display:block;
background-image:url("img/icons/folder.png");
background-size:16px 16px;
padding-left:25px;
background-repeat:no-repeat;
font-size:9pt;
background-position:4px 2px;
height:20px;
padding-top:2px;
}

a.training_management_categories_list_a:hover {
background-color:#aaa;
}

a#training_management_categories_list_a_all {
font-weight:bold;
}

a.categories_selected {
background-color:#aaa !important;
}

我是不是漏掉了什么?

编辑:使用 jquery-1.10.2.js

最佳答案

您的代码没问题,我在 jsfiddle 中试过了:http://jsfiddle.net/carloscalla/n42m6gpf/1/

发生的事情是您在 a.categories_selected 中设置的颜色与之前的颜色相同(悬停时),我将其更改为黄色 background-color: yellow !important;所以你意识到它正在工作。尝试单击该链接,您将看到它如何在弹出警报之前更改背景颜色。

更新:仅供寻找答案的人们使用。 anchor 元素重新加载页面,因此样式将设置为初始样式。您正在使用 ajax,因此您不希望重新加载页面,因此您应该传递 e函数的参数并使用 e.preventDefault()在你的 onClick函数以避免 anchor 标记的默认行为。

关于javascript - jQuery 无法将类添加到动态添加的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com