我怎样才能更换一些“这个”外部功能呢?

时间:2013-09-02 09:05:25

标签: javascript regex replace

我想在脚本中替换一些“this”。

$(this).find('option').each(function() {

    $(this).hide();
})

是否有可能仅替换外部的这个,或者只替换不在功能块内部的“this”?我的想法不起作用......

.replace(/([^{])\bthis\b([^}])/gm, $1replacement$2)

附录:第一个代码是作为字符串处理的,而不是javascript! 我正在寻找一个正则表达式来替换外部的“this”。

6 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您希望在函数中引用$(this)变量,但该变量会更改为函数的本地范围。因此,在函数中,$(this)将引用您当前正在迭代的项目。

在输入函数之前,您需要缓存$(this)对象的范围。

var cached_this = $(this);
$(this).find('option').each(function() {
    cached_this.hide();
})

现在,您可以使用$(this)变量从其他范围内访问外部cached_this的值。

答案 1 :(得分:0)

在这种情况下,这个是一个对象。它不是可以替换的字符串。您可以指定另一个值,但这样的替换将不起作用。

答案 2 :(得分:0)

如果您只想替换某些div,只需更改您的jQuery选择器以选择具有特定类的那些,或父div的子元素。例如。

答案 3 :(得分:0)

您可以尝试使用call。由于此功能,您可以替换this对象:

$(this).find('option').each(function() {
    // here this === replacement
    $(this).hide();
}.call(replacement))

答案 4 :(得分:0)

如果它在一个函数中,你可以通过在调用它时为其分配一个不同的变量来“替换”this

var func = function() {
    $(this).find('option').each(function() {
        $(this).hide();
    });
};

func.apply(annotherThis);

答案 5 :(得分:0)

区分"外部"来自"内部" text是内部的,下一个花括号是 right 一个,它关闭了它的块。

因此,使用负面预测来排除块中的this

str = str.replace(/\bthis\b(?![^{]*\})/gs, replacement);

另请注意替换术语的简化,因为匹配只是目标文本"此"。

查看此正则表达式live demo的工作情况。