在Firefox中添加带有jQuery(userscript)的表单的链接

时间:2016-02-19 12:54:25

标签: javascript jquery html

我正在尝试使用jQuery向用户脚本添加搜索链接到在线表单。我在firefox中没有太多工作,我觉得通常在chrome中工作的东西对我来说不是9/10倍。但无论如何......这需要与ff。

我正在从<p>元素中获取文本并从中创建搜索网址(或尝试)。现在这是我正在尝试的功能应该这样做...但它什么也没做,甚至没有控制台中的任何错误

$(function() {

    var companyName = $('p')[7]; // Element that contains the name text
    var companyText = companyName.text(); // Retrieve the text from element
    var mixRankUrl = $("<a></a>").innerHTML("Search Mixrank"); // Create an <a> element
    mixRankUrl.href = 'https://mixrank.com/appstore/sdks?search=' + companyText; // Define the href of the a element
    var sdkPara = $('label.control-label')[10]; // Where I want it to go
    sdkPara.append(mixRankUrl); // Append the element
});

此外,编写html的人几乎不使用任何ID,并且大多数类被分配给10个或更多元素...所以除非有更好的方法,否则我会使用节点选择器(它保持相同的形式)形式)。

1 个答案:

答案 0 :(得分:2)

问题是你尝试在DOM元素上使用jQuery方法。不清楚为什么你的代码没有任何错误。

例如:$('p')[7]返回一个DOM元素,而$('p').eq(7)返回一个JQuery对象。因此,您无法在DOM元素上使用text()之类的jQuery方法。你需要处理jQuery对象。

出于同样的原因,您对标签对象的声明以及链接的href属性的修改有问题。

试试这样:

$(function() {
  var companyName = $('p').eq(7); // Element that contains the name text
  var companyText = companyName.text(); // Retrieve the text from element
  var sdkPara = $('label.control-label').eq(10); // Where I want it to go
  var mixRankUrl = $('<a>',{
     text: 'Search Mixrank',
     href: 'https://mixrank.com/appstore/sdks?search=' + companyText
  }).appendTo(sdkPara); // Append the element
});