繁体   English   中英

按属性的部分值查找元素

[英]Find elements by attribute's partial value

我的页面上的iFrame (id = iframe1)里面有一些img标签。 其中一些将src属性设置为myimg.jpg ,'myimg_small.jpg', myimg_large.jpg等。

我想在里面找一切#iframe1src myimg ,所以我写了

images = $('#iframe1').contents().find('[src*="myimg"]')

但我得到的错误如下

未捕获错误:语法错误,无法识别的表达式:[src * =“myimg”])

在Function.Sizzle.error(jquery-1.8.2.js:4679)
在tokenize(jquery-1.8.2.js:4739)
在select(jquery-1.8.2.js:5099)
在select(jquery-1.8.2.js:5276)
在Function.Sizzle [as find](jquery-1.8.2.js:3941)
在init.find(jquery-1.8.2.js:5372)
在<匿名>:1:36

这有什么不对?

更新

 alert($('#if').contents().find('[src*="ss"]').next().html()); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <iframe id='if'> <img src='sss.jpg' /> <div> scdscd </div> </iframe> 

简单地说:

var x = $("img[src$='myimg.jpg']");
alert(x.attr("src"));

使用包含选择器 ,并在注释中提到的Enfyve删除额外的)

images = $('#iframe1').contents().find('[src~="myimg"]')

你错了使用iframe iframe必须使用src属性并使用它来加载其他页面的内容。 iframe不需要将其子元素直接包含在其标记中。

你可以试试这个。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<iframe id='if' src="1.html">
</iframe>


//1.html
...
  <img src='sss.jpg' />
  <div>
    scdscd
  </div>

你可以尝试如下。

alert($('#iframe1').contents().find('[src*="ss"]').next().html());

选择器正常工作。 你可以看到工作jsbin 这里

iframe错误使用会导致您的问题。

如果要向iframe添加内容,则必须使用src属性或使用srcdoc属性的HTML字符串指定URL。

srcdoc属性指定要在内联框架中显示的页面的HTML内容。

引用iframe srdoc

确保您的iframe src与您的主页面定位于同一个域。 否则,您无权访问iframe内容。 这称为XSS(跨站点脚本),主流浏览器阻止了它。

如果您的iframe源位于同一个域中,但仍无法访问其内容,请确保设置一个等待iframe内容的setTimeout ,因为iframe内容在加载主页后开始加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM