js indexOf不使用数字

时间:2016-09-26 20:17:17

标签: jquery

我需要检查div A的数据值是否包含div B的数据值,如果是,则将一个类应用于div B,注意有很多div B。

HTML:
<div class="a" data-num="1,2,3,4,5">div A</div>
<div class="b" data-num="3">div B</div>
<div class="b" data-num="6">div B</div>
<div class="b" data-num="1">div B</div>

JQUERY:
$('div.b').each(function(){
var a_num = $('div.a').data('num');
var b_num = $(this).data('num');

if ($(a_num).indexOf(b_num)) {
  $(this).addClass('special');
}
});

我认为上述方法可行,但事实并非如此。救命?感谢。

2 个答案:

答案 0 :(得分:1)

有几个问题......首先-1始终需要与0进行比较,因为10,11,12是有效的索引,但也是假的

如果您将数组用于div A值,那么您的概念就可以了。否则,您只是在进行字符串比较,1在使用$()

进行检查时都会返回有效索引

最后不要将数据包装在<div class="a" data-num="[1,2,3,4,5]">div A</div> 中。它不是dom相关的

你可以做到

split()

或使用当前格式并使用var a_num = $('div.a').data('num').split(',');

转换为数组
-1

对于这两种情况,您必须使用与 if (a_num.indexOf(b_num) >-1)

的比较
if ($_FILES) {
        $config['upload_path']   = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size']      = '200';
        $config['max_width']     = '1024';
        $config['max_height']    = '768';
        $this->load->library('upload');
        $this->upload->initialize($config);
        if (!$this->upload->do_multi_upload("file")) {
            $data['errors'] = ($this->upload->display_errors());
        } else {
            $images = ($this->upload->get_multi_upload_data());
            for ($i = 0; $i < count($images); $i++) {
            $this->user_model->addUserImage($images[$i]);
            }
        }

答案 1 :(得分:0)

您需要在此处创建自己的功能,因为indexOf无效。

&#13;
&#13;
function isFound(arr,num){
  fnd = false
  for (n=0; n<arr.length; n++){
    var bb = parseInt(num);
    var aa = arr[n];
    aa = parseInt(aa);
    if (aa==bb) fnd=true;
  }
  return fnd;
}
$('div.b').each(function(){
  var aa = $('.a').data('num').split(',');
  var bb = $(this).data('num');
  var tst = isFound(aa, bb);
  
  if (tst) {
    $(this).addClass('special');
  }
});
&#13;
.special{color:red;font-weight:bold;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="a" data-num="1,2,3,4,5">div A</div>
<div class="b" data-num="3">div B</div>
<div class="b" data-num="6">div B</div>
<div class="b" data-num="5">div B</div>
&#13;
&#13;
&#13;