Javascript jQuery.each()函数中缺少什么?

Javascript jQuery.each()函数中缺少什么?,javascript,jquery,each,Javascript,Jquery,Each,我有一个功能,我正试图找出/修复,但似乎无法确定问题/无法找到使其工作的方法 基本上,我的CMS正在吐出我想要的某些HREF: 第1部分)更改目标href URL 第2部分)更改按钮的文本 现在,我只有2个此类按钮的实例,所以下面是在我的控制台中打印出来的内容: 第1部分)对于这一部分,我得到了正确的URL,没有我想去掉的字符 第2部分)按钮文本的两个实例(见全部),然后是第一个按钮的正确btnParent变量,然后是第二个按钮,最后是“产品”的一个实例 我的问题是,我不知道如何: 第1部分)将

我有一个功能,我正试图找出/修复,但似乎无法确定问题/无法找到使其工作的方法

基本上,我的CMS正在吐出我想要的某些HREF:

第1部分)更改目标href URL

第2部分)更改按钮的文本

现在,我只有2个此类按钮的实例,所以下面是在我的控制台中打印出来的内容:

第1部分)对于这一部分,我得到了正确的URL,没有我想去掉的字符

第2部分)按钮文本的两个实例(见全部),然后是第一个按钮的正确btnParent变量,然后是第二个按钮,最后是“产品”的一个实例

我的问题是,我不知道如何:

第1部分)将删除的URL作为每个函数发送回相应按钮的href

第2部分)让each()函数将每个实例的新文本打印为“See All+BLAH+Products”,然后将新文本附加到相应的按钮上

代码如下:

函数viewMoreBtn(){
var btnMain=$(“li:contains('See All'));
var btnText=$(“li:contains('See All'))”).text();
var btnpart=$(“li:contains('See All'))).parent('ul').prev('li').text();
//第1部分-带链接URL的-\-//个字符
$。每个(btnMain,函数(i,v){
v=$(this.find('a').attr('href').replace('-\-/','');
控制台日志(v);
});
//第2部分-向BTN的HTML文本添加标签
$.each(btnMain,函数(索引,值){
值=(btnText+btnpart+Products);
$(btnMain).text(值);
console.log(值);
});
}

viewMoreBtn()
jQuery对象,作为通过
$(…)
返回的对象,每个对象上都有一个
方法。元素作为
上下文传递。您可以在jQuery中进一步使用它来处理作用域上下文中的对象。基本上,您拥有正确的代码,只是在错误的范围内

第一部分 第二部分
jQuery对象,作为
$(…)
返回的对象,每个
方法上都有一个
。元素作为
上下文传递。您可以在jQuery中进一步使用它来处理作用域上下文中的对象。基本上,您拥有正确的代码,只是在错误的范围内

第一部分 第二部分
请参阅@Zequ的答案,了解返回的btnMain中each()函数的迭代

这就是$.each(obj,function(key,value))的工作方式:您在btnMain上迭代,对于$.each()的每次迭代,该函数将迭代的索引分配给i,将该索引处的btnMain值分配给v

$.each(btnMain, function(i, v) {
    //v = $(this).find('a').attr('href').replace('-_-//', '');
    console.log(i); // I am the index of $.each() iterator
    console.log(v); // I am the node from the btnMain array
    // I don't know if this is right without seeing your HTML, but it seems like what you want
    v.find('a').attr('href').replace('-_-//', '');
});

第二个$.each()遵循相同的模式。

请参阅@Zequ的答案,了解返回的btnMain中each()函数的迭代

这就是$.each(obj,function(key,value))的工作方式:您在btnMain上迭代,对于$.each()的每次迭代,该函数将迭代的索引分配给i,将该索引处的btnMain值分配给v

$.each(btnMain, function(i, v) {
    //v = $(this).find('a').attr('href').replace('-_-//', '');
    console.log(i); // I am the index of $.each() iterator
    console.log(v); // I am the node from the btnMain array
    // I don't know if this is right without seeing your HTML, but it seems like what you want
    v.find('a').attr('href').replace('-_-//', '');
});

第二个$.each()遵循相同的模式。

如果我理解正确,您将混淆变量

$。每个都是传递的数组/对象的每个元素的函数。它为您提供索引和元素,请检查

在第1部分中,您将v定义为所需的字符串,您根本没有更改元素,您需要这样的内容:

$.each(btnMain, function() {
    // you're saying you got the correct URLs, so the only thing you need to do is to change the element afterwards
    var element = $(this).find('a');
    v = element.attr('href').replace('-_-//', '');
    element.attr('href', v);
});`
您还可以使用
btnMain.each
代替
$。each

在第2部分中,您将value变量(实际上是您正在迭代的元素)更改为所需的字符串,然后尝试更改btnMain的文本。这是错误的,据我所知,btnMain是两个元素的数组,您不能更改它的文本。您应该更改元素的值(你称之为value)应该是这样的

$.each(btnMain, function(index, element){
    // I think this is the time you want to define the btnParent, relative to the element
    var btnParent = element.parent('ul').prev('li').text();
    var value = (btnText + btnParent + 'Products');       
    element.text(value);
}
我想这就是你需要的。
此外,您还可以将这两个部分附加到一个部分中,因为这两个部分都在btnMain上迭代。如果我理解正确,那么您就混淆了变量

$。每个都是传递的数组/对象的每个元素的函数。它为您提供索引和元素,请检查

在第1部分中,您将v定义为所需的字符串,您根本没有更改元素,您需要这样的内容:

$.each(btnMain, function() {
    // you're saying you got the correct URLs, so the only thing you need to do is to change the element afterwards
    var element = $(this).find('a');
    v = element.attr('href').replace('-_-//', '');
    element.attr('href', v);
});`
您还可以使用
btnMain.each
代替
$。each

在第2部分中,您将value变量(实际上是您正在迭代的元素)更改为所需的字符串,然后尝试更改btnMain的文本。这是错误的,据我所知,btnMain是两个元素的数组,您不能更改它的文本。您应该更改元素的值(你称之为value)应该是这样的

$.each(btnMain, function(index, element){
    // I think this is the time you want to define the btnParent, relative to the element
    var btnParent = element.parent('ul').prev('li').text();
    var value = (btnText + btnParent + 'Products');       
    element.text(value);
}
我想这就是你需要的。
此外,您还可以将这两个部分附加到一个部分中,因为这两个部分都在btnMain上迭代。如果您的代码包含一些HTML以便可以运行,这将非常有用。除此之外,我认为您没有使用$.each()正确。我会在答案中添加一个代码片段…如果您的代码包含一些HTML,这样它就可以运行了,这会很有帮助。除此之外,我认为您没有使用$.each()正确。我会在答案中加入一段代码片段…这非常有效。谢谢你,泽克。总之,我对逻辑思考过度了?是的,我会这么说。你的想法是正确的,但你只是把它放在了错误的位置:P你不小心对整个数组进行了操作,而不是数组中的每个元素。这非常有效。谢谢你Zequ。总之,我是在考虑逻辑?是的,我会这么说。你的想法是正确的,但你只是把它放在了错误的地方:P你不小心在整个数组上操作,而不是数组中的每个元素。我为省略html表示歉意……这绝对是一场噩梦。哈哈。太多了