jQuery “意外令牌非法”

jQuery "Unexpected token ILLEGAL"

本文关键字:非法 令牌 意外 jQuery      更新时间:2023-09-26

我有两个函数,用于按类显示和隐藏元素:

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 中导致错误"意外令牌非法"。使用FireFox,我没有收到任何错误,但是该功能不适用于任何浏览器。我尝试与不同的编辑一起找到一些非法字符等,但没有运气。可能是什么原因造成的?

你显然在尝试设置一个切换按钮,但它是我见过的最复杂的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');

上面的代码可能需要稍作调整,具体取决于默认状态是"隐藏"还是"显示"。