2

我在 theme.js 文件中有一个函数

 $('.open_copy').click(function(){
        var that = $(this);
        var copy = that.prev();

        that.parents('.asset').find('.cover').click();
        copy.css('opacity', 0).show();
        if (copy.children('.copy_content').data('jsp')) {
            copy.children('.copy_content').data('jsp').destroy();
        }
        var height = copy.children('.copy_content').css({height: ''}).height();

        if (height < that.parents('.asset').height() - 37) {
            var top = (that.parents('.asset').height() - height)/2;
            top = top < 37 ? 37 : top;
            copy.children('.copy_content').css({'margin-top': top});
        } else {
            copy.children('.copy_content').css({'margin-top': '', height: that.parents('.asset').height() - 37}).jScrollPane();
        }

        if (!that.parents('.asset').find('.close_copy').length) {
            that.prev().append('<a href="#" class="close_copy">Close</a>');
        }

        copy.animate({ 'opacity' : 1 }, 500);

        that.fadeOut(500);
        return false;
    });

我需要将不透明度值更改为 0.9,但我无权访问 theme.js 文件。有什么方法可以通过在 html 页面中添加函数来更改/更改此函数?

copy.animate({ 'opacity' : 1 }, 500);
4

2 回答 2

3

是的。您可以删除代码设置的单击处理程序,然后使用相同的代码添加您自己的处理程序,但1=>0.9更改除外。

要删除该代码的点击处理程序(和所有其他),请使用off

$('.open_copy').off('click');

...然后当然添加您自己的新click处理程序。

所以总的来说,你会想要这段代码(标签之后,script包括theme.js,所以这段代码在那个代码之后运行):

$('.open_copy').off('click').click(function(){ // <== Changed
    var that = $(this);
    var copy = that.prev();

    that.parents('.asset').find('.cover').click();
    copy.css('opacity', 0).show();
    if (copy.children('.copy_content').data('jsp')) {
        copy.children('.copy_content').data('jsp').destroy();
    }
    var height = copy.children('.copy_content').css({height: ''}).height();

    if (height < that.parents('.asset').height() - 37) {
        var top = (that.parents('.asset').height() - height)/2;
        top = top < 37 ? 37 : top;
        copy.children('.copy_content').css({'margin-top': top});
    } else {
        copy.children('.copy_content').css({'margin-top': '', height: that.parents('.asset').height() - 37}).jScrollPane();
    }

    if (!that.parents('.asset').find('.close_copy').length) {
        that.prev().append('<a href="#" class="close_copy">Close</a>');
    }

    copy.animate({ 'opacity' : 0.9 }, 500);  // <== Changed

    that.fadeOut(500);
    return false;
});

您需要检查副作用(例如,如果有其他代码也在click这些元素上设置处理程序,因为上面的代码也会删除它们)。

于 2013-05-09T17:14:30.403 回答
0

Javascript 支持覆盖变量和方法。您应该在导入 Theme.js 文件后声明一个覆盖的 JS 脚本。因此,您可以准确地复制/粘贴该函数,只更改您需要的值。

请注意,由于该函数是一个事件绑定,您可能需要先取消绑定 onclick 事件。

于 2013-05-09T17:17:30.693 回答