每个函数内的 Javascript jQuery 数组函数

标签 javascript jquery arrays

我认为我遇到了范围问题。这是我的 html(我知道这是“坏”html,但它来自另一个来源):

<table>
    <tr>
        <td>
            <div><b>blablabla <span>some text</span></b></div>
        </td>
    </tr>
    <tr>
        <td>
            <div><b><span>this is another text</span></b></div>
        </td>
    </tr>
    <tr>
        <td>
            <div><b>blablabla <span>this is</span> <span>one more text</span></b></div>
        </td>
    </tr>
</table>

这是我的 JavaScript

$(document).ready(function() {      
// delete all span in b
$('b span').contents().unwrap();
// delete "blablabla"
$("b:contains('blablabla')").html(function(i, text) {
    return text.replace(/blablabla/g, '');
});

$("b").each(function() {
    var bcont = $(this).text();
    var stxts = [ "this is another text", "this should not match" ];
    $.each(stxts, function(i, val) {
        alert($("b").text());
        if ( bcont == val) {
            $(this).closest("tr").css({"background" : "green"});
        }
    });
});

});

如果 b 标签内的文本与 stxts 数组值之一匹配,我想更改包含匹配的 b 标签的 tr 标签的背景颜色。 我究竟做错了什么? 在 if 语句条件中,我尝试了 == 比较和 === 。 在 if 语句中,我尝试用 $("b") 替换 $(this) ,但没有结果。我尝试使用 for 循环而不是 $.each 但没有成功。 我确信我在“另一个函数内的函数”这件事上做错了。 感谢您抽出时间。

最佳答案

问题是$(this)在你的第二个里面.each()

您想要$(this)代表第一个.each()但自从你使用 $(this)在第二个.each()它代表那个。

将变量设置为 $(this)第一个里面.each()例如:var $this = $(this)并使用$($this).closest("tr").css({"background-color": "green"});

$(document).ready(function() {
  // delete all span in b
  $('b span').contents().unwrap();
  // delete "blablabla"
  $("b:contains('blablabla')").html(function(i, text) {
    return text.replace(/blablabla/g, '');
  });

  $("b").each(function() {
    var $this = $(this)
    var bcont = $(this).text().trim();
    var stxts = ["this is another text", "this should not match"];
    $.each(stxts, function(i, val) {
      if (bcont == val) {
        $($this).closest("tr").css({
          "background": "green"
        });
      }
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <div><b>blablabla <span>some text</span></b></div>
    </td>
  </tr>
  <tr>
    <td>
      <div><b><span>this is another text</span></b></div>
    </td>
  </tr>
  <tr>
    <td>
      <div><b>blablabla <span>this is</span> <span>one more text</span></b></div>
    </td>
  </tr>
</table>

关于每个函数内的 Javascript jQuery 数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44758189/

相关文章:

java - 如何在Java中打印指向数组的对象

javascript - 监控来自 IE BHO 的 ajax 调用

javascript - 添加数据时如何向下滚动到页面底部?

javascript - Rails 3.2 - 表单多次错误提交

python - 连接两个大小不等的 numpy 数组并根据公共(public)列填充第三个数组

javascript - 动态决定for循环的顺序

javascript - 如何在使用jquery插入 `thead`之前插入 `tbody`

javascript - 当窗口顶部到达特定元素时向 DIV 添加一个类,否则将其删除

javascript - 如何从 javascript/jQuery 中的整数字符串中获取 int[]?

javascript - 如何从其他页面调用 Javascript 函数?