我的网站的主图片会根据您点击的缩略图而变化。对于某个主要图片,我希望填充特定于该图像的文本。文本以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>
答案 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()) {...}
答案 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();
}