我有这个功能:
NewShowHideDiv2(iconID, divID, disabled) {
var x = document.getElementById(divID);
var y = document.getElementById(iconID);
$(eval(y)).click(function() {
console.log(eval(y));
$(eval(y)).toggleClass( "clicked" );
});
$(eval(x)).slideToggle("slow", function() {
});
}
我想让它做的就是在点击时切换“点击”类。但是,它会忽略第一次和第二次单击,然后将其应用于第三次和所有后续奇数次点击。任何想法?
答案 0 :(得分:0)
在不知道如何调用NewShowHideDiv2
的情况下,很难确定,但可能存在一些问题。
首先,通过将您的点击绑定功能放在另一个函数中,在运行NewShowHideDiv2
之前,事件不会绑定到该元素。所以你要把它拉出来并把它放在这样的东西中:
$( document ).ready(function() {
$(eval(y)).click(function() {
console.log(eval(y));
$(eval(y)).toggleClass( "clicked" );
});
});
此外,JS对象的eval方法可能会导致问题,当然不是最佳实践。您需要将其修改为:
$( document ).ready(function() {
$("#iconIDHere").click(function() {
console.log(this);
$(this).toggleClass( "clicked" );
});
function NewShowHideDiv2(divID, disabled) {
$("#" + divID).slideToggle("slow", function() {
});
}
});
答案 1 :(得分:0)
尝试使用vanilla JS:
var x = document.getElementById('divID');
x.addEventListener('click', function(e) {
if(e.target.classList.contains('clicked')) {
e.target.classList.remove('clicked');
} else {
e.target.classList.add('clicked');
}
});
我认为JQuery是:
$('#divID').click(function() {
$('#divID').toggleClass('clicked');
});