5

我需要检查链接(a-tag)是否是段落标签(p)内的唯一内容(不仅仅是唯一的孩子)。因此,如果 p-tag 看起来像这样:

<p>Here we have some text inside the p-tag. Then there's <a href="#">link</a>.</p>

<a>标签不是 p-tag 内的唯一内容,因为还有文本。

但如果<p>标签看起来像这样:

<p><a href="#">Nothing but a link inside this p-tag</a></p>

<p>标签内的唯一内容是链接。

如果一个<p>标签只包含一个<a>标签,我想给标签添加一个特定的类<a>

我正在使用这段代码:

$("#MainColumn p a:only-child").addClass("singleLink");

但是此代码仅检查 a-tag 是否是 p-tag 的唯一子项,而不是唯一的content。这是我目前陷入困境的地方。

4

4 回答 4

1

尝试这个:

  $('#MainColumn p a').each(function(){
    var p = $(this).parent().text().length;
    var s = $(this).text().length;
    if (p == s) {
        $(this).addClass('singleLink')
    }
  })

http://jsbin.com/ewoqoy/2/

于 2012-06-13T13:00:07.973 回答
1

我认为这将是您的例外

String.prototype.startsWith = function(prefix) {
    return this.indexOf(prefix) === 0;
}

String.prototype.endsWith = function(suffix) {
    return this.match(suffix+"$") == suffix;
};

var html = $("#myP").html();
if($("#myP p:only-child")){
if(html.startsWith("<p>") && html.endsWith("</p>")){
alert("hi");
}
}

<div id="myP"><p >Sample Text inside a <b>p</b> element</p></div>
于 2012-06-13T13:53:54.530 回答
1

使用一个选择器可以很容易:

var $content = $("#MainColumn p:has(a)").filter(function() {
    return $(this).contents().length === 1;
}).children('a').addClass("singleLink");

现场演示

于 2012-06-13T12:56:47.693 回答
-2

嗯...也许您可以检查内容是否以“http://”或“www”开头:

if($("#MainColumn p a:only-child").text().indexOf("www") != -1 {


}

因为您的链接也是“内容”,所以“您的内容”和“无内容”之间没有区别。您必须说出“您的内容”是如何定义的。

于 2012-06-13T13:02:33.487 回答