Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jQuery中对html()和text()执行直接操作_Jquery - Fatal编程技术网

在jQuery中对html()和text()执行直接操作

在jQuery中对html()和text()执行直接操作,jquery,Jquery,有没有一种方法可以告诉jQuery您希望将text()或html()之后的内容应用于它?难以解释,更容易展示: $("#someElement").html().replace(oldWord, newWord, "g"); 上述操作不会更改DOM,您必须执行以下操作: $("#someElement").html($("#someElement").html().replace(oldWord, newWord, "g")); 这是a**中的痛 编辑:不过,我希望看到的是这样做的可能性:

有没有一种方法可以告诉jQuery您希望将
text()
html()
之后的内容应用于它?难以解释,更容易展示:

$("#someElement").html().replace(oldWord, newWord, "g");
上述操作不会更改DOM,您必须执行以下操作:

$("#someElement").html($("#someElement").html().replace(oldWord, newWord, "g"));
这是a**中的痛

编辑:不过,我希望看到的是这样做的可能性:

$("#someElement").html(.replace(oldWord, newWord("g"));

我不知道这是否可行,甚至不知道是否切实可行。有什么原因不能这样做吗?

没有,您将HTML代码作为字符串,更改后必须将字符串放回原处


对于这样的构造,
html
函数必须返回一个对象,该对象具有
replace
等方法,您可以使用这些方法来更改内容。但是,如果您想要应用多个更改(这几乎就是链接方法的要点),那么这将是无效的,因为它必须获取HTML代码并为每个更改将其放回。当您将HTML代码作为字符串获取时,您可以随意使用它,并在使用完后将其放回原处。

不,您将HTML代码作为字符串获取,更改后必须将字符串放回原处


对于这样的构造,
html
函数必须返回一个对象,该对象具有
replace
等方法,您可以使用这些方法来更改内容。但是,如果您想要应用多个更改(这几乎就是链接方法的要点),那么这将是无效的,因为它必须获取HTML代码并为每个更改将其放回。当您将HTML代码作为字符串获取时,您可以随意使用它,并在使用完后将其放回原处。

否这些函数返回字符串,而不是jQuery。您首先需要获取值,执行您的魔术,然后将值设置回原来的值。您还必须使用普通javascript来实现这一点,但是语法可能没有那么麻烦

 var elem = $("#someElement").get(0);
 elem.innerHTML = elem.innerHTML.replace(oldWord,newWord,"g");
就我个人而言,我会坚持使用jQuery,但将其分开以使其更具可读性

 var elem = $("#someElement");
 var html = elem.html();
 elem.html( html.replace(oldWord,newWord,"g") );

不,这些函数返回字符串,而不是jQuery。您首先需要获取值,执行您的魔术,然后将值设置回原来的值。您还必须使用普通javascript来实现这一点,但是语法可能没有那么麻烦

 var elem = $("#someElement").get(0);
 elem.innerHTML = elem.innerHTML.replace(oldWord,newWord,"g");
就我个人而言,我会坚持使用jQuery,但将其分开以使其更具可读性

 var elem = $("#someElement");
 var html = elem.html();
 elem.html( html.replace(oldWord,newWord,"g") );

您可以非常轻松地将其制作成一个简单的插件:

jQuery.fn.replaceHTML = function (old, new) {
    return this.each(function() {
        var $t = $(this);
        $t.html($t.html().replace(old, new);
    });
};

// usage:
$('#myElement').replaceHTML('foo', 'bar');
$('#anotherElement').replaceHTML(/f(?:oo|u)/g, 'bar');
这也不会打断您的链接:

$('#blah').replaceHTML('abc', 'def').hide();

正如Doug D所评论的,只要记住正则表达式+html可能是不可预测的,并且可能会导致问题,除非你非常小心。

你可以很容易地将其制作成一个简单的插件:

jQuery.fn.replaceHTML = function (old, new) {
    return this.each(function() {
        var $t = $(this);
        $t.html($t.html().replace(old, new);
    });
};

// usage:
$('#myElement').replaceHTML('foo', 'bar');
$('#anotherElement').replaceHTML(/f(?:oo|u)/g, 'bar');
这也不会打断您的链接:

$('#blah').replaceHTML('abc', 'def').hide();

正如Doug D评论的那样,请记住,正则表达式+html可能是不可预测的,并且可能会导致问题,除非您非常小心。

请注意,以防您尚未想到它。HTML上的搜索和替换有两个复杂问题。1.替换将应用于HTML标记名和属性,这可能是有意的,也可能不是有意的。2.某些“单词”可能无法按预期替换,因为它们被标记分割,例如,[span class=“firstChar”]D[/span]直接操作。替换“Direct”将找不到它,因为injects关闭SPAN标记。请注意,以防您尚未想到它。HTML上的搜索和替换有两个复杂问题。1.替换将应用于HTML标记名和属性,这可能是有意的,也可能不是有意的。2.某些“单词”可能无法按预期替换,因为它们被标记分割,例如,[span class=“firstChar”]D[/span]直接操作。替换“Direct”将找不到它,因为injects closing SPAN标记。