2012-03-24 75 views
0

我的網站有一個主要圖像,根據您點擊的縮略圖而變化。對於某個主圖片,我希望特定於該圖片的文本可以填充。文本以顯示開始:無;然後我用.show();顯示它。我的代碼似乎沒有發生任何事情,所以任何幫助將不勝感激。 jQuery的是:jquery選擇href與* =

$(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

您的'if'語句總是評估爲'false'。嘗試,例如,使用:'($(「div.bigimage a [href * ='karina']」)。length)' – 2012-03-24 23:41:01

+0

你有我們可以看到的演示嗎? – Starx 2012-03-24 23:48:33

回答

0

您的問題是區分大小寫的結果:您正在尋找natalia,但鏈接url包含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(); 
} 
+0

太棒了!非常感謝丹尼斯! – 2012-03-25 17:14:39

+0

另外,請記住重複的id是非法的。與您當前的問題無關,但可能會在未來造成問題。 – Dennis 2012-03-25 19:32:05

0

jQuery的電話諮詢,與選擇不返回一個布爾值,它返回一組匹配的元素。

因此,而不是測試是這樣的:

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

您可以測試的jQuery返回集合的大小:

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

更多的信息在這裏:http://api.jquery.com/jQuery/

0

添加這個小函數到jQuery

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

然後你就可以用

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

解決方案從這裏Is there an "exists" function for jQuery?

+0

我試過這個,但它仍然不起作用:/ – 2012-03-25 00:26:42

+0

這工作100%。將所有這些內容發佈在其中 – 2012-03-25 14:56:49

+0

已編輯原代碼的帖子 – 2012-03-25 15:41:03

0

測試也許你可以嘗試使用string.match聲明。

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

$("div.bigimage a").attr('href')將返回一個字符串,並.match會發現它:)

這只是在情況下,你可能會發現更容易的想法。