filter()和find()方法有问题

时间:2013-07-03 03:46:13

标签: jquery filter find

这是来自图像滑块的片段,我正在尝试获取当前显示的具有样式属性“display:list-item”的图像的数据属性。由于我不知道将显示什么图像,我无法使用图像ID,所以我必须通过DOM过滤。我已经尝试了几种方法,包括下面的filter()方法,但我继续使用未定义的变量或空对象。

HTML

<ul class="bjqs" style="height: 500px; width: 100%; display: block">
  <li class="bjqs-slide" style="height: 300px; width: 100%; display: list-item;">
    <img id="image1" data-score="0" alt="Body Condition Score 5" src="mazihealth/My Images/BCS5cropped.jpg" title="Slide1" style="height: 300px; width: 100%;">
    <p class="bjqs-caption" style="position:relative">
      <img id="checkmark" src="mazihealth/My Images/checkmark2.jpeg">
    </p>
  </li>
</ul>

JQ

var currimg = $('li.bjqs-slide').filter("style","display:list-item").attr('data-score');

3 个答案:

答案 0 :(得分:0)

如果您只需要第一个img的分数:

$(function () {
    var currimg = $('li.bjqs-slide').find('img').first().data('score');
    alert(currimg);
});

如果您需要存储在数组中的多个img的分数:

$(function () {
    var imgScore[] = $('li.bjqs-slide').find('img').data('score');
});

答案 1 :(得分:0)

这应该适合您:http://jsfiddle.net/ZEEZP/2/

var currimg = $('li.bjqs-slide').filter(function() {
    return this.style['display'] == "list-item"
}).first().find("img").first().data('score');
console.log(currimg);

将返回第一个scoreimg的{​​{1}} li.bjqs-slide display。{/ p>

答案 2 :(得分:0)

.filter()用于查找当前查询结果中的元素。

.find()用于查找当前结果后代中的元素。

你的.filter调用有2个参数,但它应该只有一个。您可以使用$(“li.bjqs-slide [style * ='list-item']”)来查找其style属性当前包含“list-item”的元素。

然后,您将从找到的元素中提取data-score属性的值,但看起来您应该从包含的图像中提取它。