多元素选择器上的jQuery方法链接

jQuery method chaining on multiple element selector

本文关键字:jQuery 方法 链接 元素 选择器      更新时间:2023-09-26

有几个元素的css类pageLink我想替换这些链接中的一些字符串

 $(".pageLink").html($(".pageLink").html().replace("x", "y"));

问题是,第二个$(".pageLink").html()获得任何元素的内部HTML,而不一定是我要更改/设置的元素的HTML。我需要像

这样的东西
 $(".pageLink").html(this.html().replace("x", "y"));
在jQuery中是否存在类似的东西,或者我是否必须使用each循环?

您不需要each循环遍历所有元素。你可以使用function来设置元素的innerHTML。

$(".pageLink").html(function(ind, elHtml) {
    return elHtml.replace("x", "y");
});

文档

您可以使用每个

$('.pagelink').each(function(){
   $(this).html(function(i,v){
     return v.replace("x", "y");
   });
});

使用jQuery.each()方法遍历元素,并将HTML单独应用于每个链接。

$(".pageLink").each(function() {
    $(this).html($(this).html().replace("x", "y"));
});

获取innerhtml值作为回调函数的参数,

$(".pageLink").html(function (idx, elm) {
    return elm.replace("x", "y")
});

如果你有一个选择集,你想让每个元素与自己相匹配,你需要在setter中使用each循环或类似的循环结构,没有聪明的方法可以绕过它,因为你需要一个函数作用域才能让this像你的例子一样工作:

$(".pageLink").html(function(_, v){
    return v.replace("x", "y");
});