每个函数里面都有Javascript jQuery数组函数

时间:2017-06-26 10:58:54

标签: 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),没有结果。而不是$ .each我尝试了一个没有运气的for循环。 我确定我在“另一个函数内部的函数”中做错了。 谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

第二个libs/armeabi-v7a/libMyOpencvLibs.so

中的问题是$(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>