jQuery prependTo 选择器字符串

jQuery prependTo selector string

所以,我正处于让脚本选择 HTML 网页的正确主体的阶段,但脚本没有选择正确的子元素,而是为每个可能的元素添加了一个图像元素代替。

我在让选择器按我想要的方式工作时遇到了问题,我可以使用一些建议。

(用户名代码 "Twisty",略有改动)

$("a").each(function(i, el){
  var $a = $(el);
  if($a.attr("href").indexOf(".pdf")){
    var $icon = $("<img>", {
      src: "img/pdf.png",
      alt: "PDF"
    }).prependTo($a).position({
      my: "right+5 top",
      at: "left top",
      of: $a
    });
  }
});

此代码找到图像并将其添加到正确的 HTML 元素上,但 prependTo 选择器未定义。

我尝试了很多可能的解决方案,比如使用 find(".pdf") 等等,但我总是做错事。

尝试复制已发现解决方案的示例:

$("a").each(function(i, el){
    var $a = $(el);
    if(String($a.attr("href").indexOf(".pdf")))
    $(el).children($a).prependTo($(".pdf", el));
});

我想要做的是让选择器将已选择的图像添加到 link 中带有“.pdf”的图像

其中包含 .pdf 的示例元素:

<a href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf">ECMAScript Language Specification (an external PDF)</a>

String.prototype.indexOf(searchValue[, fromIndex]) returns 已找到传递的 searchValue 的索引。如果 searchValue 找不到它 returns -1.

并且因为 -1 是一个 truthy value,在比较中计算为 true,例如:

if($a.attr("href").indexOf(".pdf")){
  //...
}

你的 if(...) 只会被跳过,当 href 属性的内容是 ".pdf" 因为那时 .indexOf(".pdf") 会 return 0 这是一个 falsy value,计算结果为 false.

您必须明确测试此 "found" 案例:

if($a.attr("href").indexOf(".pdf") > -1){
  //...
}

我建议你阅读http://api.jquery.com/attribute-ends-with-selector/

$('a[href$=".pdf"]').each(function(){
    $(this).prepend('<img src="img/pdf.png" alt="PDF" />');

    $('>img:first',this).position({
      my: "right+5 top",
      at: "left top",
      of: // CAN BE $(this) or $(this)[0], or just remove position
    });
});