Jquery用* =选择href

时间:2012-03-24 23:37:56

标签: jquery

我的网站的主图片会根据您点击的缩略图而变化。对于某个主要图片,我希望填充特定于该图像的文本。文本以display:none开头;然后我用.show();显示它。我的代码似乎没有发生任何事情,所以任何帮助都会非常感激。 jquery是:

$(document).ready(function() {
jQuery.fn.exists = function() {
    return this.length > 0;
};
if ($("div.bigimage a[href*='karina']").exists()) {
    $("ul li.karina").show();
    $("ul li.natalia").hide();
    $("ul li.celeste").hide();
}
else if ($("div.bigimage a[href*='natalia']").exists()) {
    $("ul li.karina").hide();
    $("ul li.natalia").show();
    $("ul li.celeste").hide();
}
else if ($("div.bigimage a[href*='celeste']").exists()) {
    $("ul li.karina").hide();
    $("ul li.natalia").hide();
    $("ul li.celeste").show();
}
else {
    $("ul li.karina").hide();
    $("ul li.natalia").hide();
    $("ul li.celeste").hide();
}

});

它试图选择的html是:

​<div class="bigimage">
<li>
<a href="http://cdn.shopify.com/s/files/1/0103/5102/products/Natalia_1024x1024_IMG_5760.jpg?4679">picture here</a></li>
</div>

<ul>
<li id="model-name" class="karina">Karina is 5'7" and is wearing a size 34 C/D Regular</li>
            <li id="model-name" class="celeste">Celeste is 5'8" and is wearing a size 34 C/D Regular</li>
            <li id="model-name" class="natalia">Natalia is 5'10" and is wearing a size 34 A/B Tall</li>
</ul>​​​​​​

4 个答案:

答案 0 :(得分:0)

使用选择器调用jquery不返回布尔值,它返回匹配元素的集合。

所以,而不是像以下那样测试:

if ($("div.bigimage a[href*='karina']") === true) {
...
}

您可以测试jQuery返回的集合的大小:

if ($("div.bigimage a[href*='karina']").length > 0) {
...
}

此处有更多信息:http://api.jquery.com/jQuery/

答案 1 :(得分:0)

将这个小函数添加到jQuery

jQuery.fn.exists = function(){return this.length>0;}

然后你可以用

进行测试

if ($("div.bigimage a[href*='karina']").exists()) {...}

此处的解决方案Is there an "exists" function for jQuery?

答案 2 :(得分:0)

也许你可以尝试使用string.match语句。

 if ( $("div.bigimage a").attr('href').match("karina") ) { 
//some action here
  }

$("div.bigimage a").attr('href')会返回一个字符串,而.match会找到它:)

这只是一个想法,万一你会发现它更容易。

答案 3 :(得分:0)

您的问题是区分大小写的结果:您正在寻找natalia,但链接网址包含Natalia。编写代码的方法也短得多:

$("ul li").hide(); // hide all
var url = $("div.bigimage a")[0].href;
if (url.indexOf("Karina") > -1) {
    $("ul li.karina").show();
}
else if (url.indexOf("Natalia") > -1) {
    $("ul li.natalia").show();
}
else if (url.indexOf("Celeste") > -1 ) {
    $("ul li.celeste").show();
}