javascript - jQuery中的选择器和条件问题

我有一个简单的HTML模板,在整个文档中使用了多次。本质上,它是以下div元素,它们包裹着几个p元素和另一个带有div类的button元素。为了可视化,下面是一个示例:

<div class="content">    
    <p>First paragraph</p>
    <p>Second paragraph</p>

    <div><a class="button" href="http://www.apple.com/ipad/">Change me jQuery!</a></div>
</div>

<div class="content">    
    <p>First paragraph</p>
    <p>Second paragraph</p>

    <div><a class="button" href="http://www.apple.com/iphone/">Change me jQuery!</a></div>
</div>


现在,将使用此模板在网站上发布内容的用户并不总是在该定位标记中使用相同的url,但我确实知道他们可以使用哪些。因此,我尝试使用以下代码:


内容发布后,锚标签会给出网址
地址,我要检查该地址,看看是否有特定的
里面的字。如果找到该词,则将锚文本更改为我选择的内容。
再次执行相同操作,但是这次检查url字符串中的其他单词。


这是我写的:

$('.content').each(function () {
    var $this = $(this),
        $findP = $this.find('p');

    if ($findP.length > 2) {
        // Run some code
    } else if ( ($findP.length <= 2) && ($('a[href*="ipad"]')) ) {
        $this.find('a.button').text('Visit iPad site');
    } else if ( ($findP.length <= 2) && ($('a[href*="iphone"]')) ) {
        $this.find('a.button').text('Visit iPhone site');
    }
});​


问题:


两个锚标记的文本仅更改为我在 .text() jQuery方法内的其他if语句中编写的文本字符串。在我的示例中,第一个锚标记应使用文本“ Visit iPad site”,而第二个应是“ Visit iPhone site”。这是此示例的有效提示: http://jsfiddle.net/vj4xZ/1/


我猜这里的问题是,一旦找到第一个元素,便会为所有锚标签分配.text()方法中的内容,并且代码就在那里停下来,而没有寻找第二个if语句中的内容。如果是这种情况,或者还有其他问题,我如何才能使其正常工作?任何帮助,将不胜感激。感谢您的时间!

最佳答案

http://jsfiddle.net/zerkms/vj4xZ/2/

您需要将条件更改为此:

} else if ( ($findP.length <= 2) && ($this.find('a[href*="ipad"]').length) ) {


$('a[href*="ipad"]')-表示-如果文档中的href中是否有带有 ipad的锚点

我更改的内容-仅限使用 $this.find()仅按当前元素搜索锚点

您也可以使用 $('a[href*="ipad"]', $this)代替,它可以完成相同的工作