如何在div的子节点中搜索字符串

时间:2014-08-08 20:55:09

标签: jquery

<div id="store">
<img class="act" src="imgT/01.jpg" alt="img">
<img src="imgT/05.jpg" alt="img">
<img src="imgT/02.jpg" alt="img">
</div>

我需要搜索#store的孩子,并获得由“05”组成的孩子的src属性。

类似的东西:

var src = $("#store").children().find("05").attr("src");
alert (src);

我需要imgT/05.jpg作为结果。

4 个答案:

答案 0 :(得分:3)

您可以使用jquery外卡:

<div id="store">
    <img class="act" src="imgT/01.jpg" alt="img">
    <img src="imgT/05.jpg" alt="img">
    <img src="imgT/02.jpg" alt="img">
</div>

<script type="text/javascript">
    $(document).ready(function () {
        var src = $("#store").find("img[src*='05']").attr("src");
        alert(src);
    });
</script>

答案 1 :(得分:1)

你可以试试这个。

var img_list = $("#store").children()

    $.each(img_list,function(index,value){

          var src = $(value).attr("src");
          var _src = src.split(".")[0];
              _src = src.split("/");
          if (_src == "05"){
              alert(src)
          }

    })

答案 2 :(得分:1)

$("#store").children().each(function() {
   var img = this.src.split('/').pop();
   if(img == '05.jpg') { 
      alert(this.src);
   }
});

http://jsfiddle.net/v28cdyvo/1/

更进一步 如果无法确定图片扩展名,我们可以设置正则表达式来提取除数字之外的所有内容。当然,您的图像存储将文件名称作为整数,并为其预先填充0。要做到这一点,你可以这样做:

img = img.replace(/[^0-9]/g, '');

http://jsfiddle.net/v28cdyvo/

考虑 jQuery的each()方法,一旦找到匹配项,就无法摆脱循环。您可能认为可以执行break声明,但这是非法的。如果你有很多图像,那么这可能会影响性能。你只需使用一个基本的for循环就可以遍历对象数组,然后在找到它时就中断。

根据此bechmark

,我的代码执行速度最快

答案 3 :(得分:1)

var src = $('#store img').filter(function () {
    return $(this).attr('src').match('05')
}).attr('src')
console.log(src);

请注意,这会在图片src属性中的任何位置匹配05