我有两个函数,用于按类显示和隐藏元素:
if (typeof showClass != 'function') {
function showClass(trClass, buttonId, hideMessage, showMessage) {
var button = '#' + buttonId;
var value = hideMessage;
$(button).attr("value", value);
$(button).attr("onclick", "hideClass('" + trClass + "', '" + buttonId + "', '" + showMessage + "', '" + hideMessage + ");");
var classToShow = '.' + trClass;
$(classToShow).css('visibility', 'visible');
}
}
if (typeof hideClass != 'function') {
function hideClass(trClass, buttonId, showMessage, hideMessage) {
var button = '#' + buttonId;
var value = showMessage;
$(button).attr("value", value);
$(button).attr("onclick", "showClass('" + trClass + "', '" + buttonId + "', '" + hideMessage + "', '" + showMessage + ");");
var classToHide = '.' + trClass;
$(classToHide).css('visibility', 'hidden');
}
}
showClass作为例外,但hideClass在Chrome中导致错误“Unexpected token ILLEGAL”。使用FireFox我没有收到任何错误,但该功能不适用于任何一种浏览器。我尝试了不同的编辑,找到一些非法的角色等,但没有运气。可能是什么原因?
答案 0 :(得分:0)
你显然试图设置一个切换按钮,但这是我见过的最令人费解的jQuery和内联事件处理程序。
试试这个:
function setupToggle(trigger, target, hideMessage, showMessage) {
var state = false; // true means button says "show", target is hidden
var $el = $(trigger);
function update() {
$el.attr('value', state ? showMessage : hideMessage);
$(target).css('visibility', state ? 'hidden' : 'visible');
}
update(); // set initial state
$el.on('click', function() {
state = !state; // on click, flick state and refresh
update();
});
}
用法:
setupToggle('#mybutton', '.mytr', 'Hide it', 'Show it');
上述代码可能需要稍微调整,具体取决于默认状态是“隐藏”还是“显示”。