2017-01-16 53 views
-2

我有多個錨點標記,我想匹配它們的href屬性。根據div應該顯示的匹配。我已經使用下面的代碼,但它沒有工作。如何根據jquery中錨點選項卡列表的href顯示div

<div class="form-group search-form" style="display: none;"> 
    <input type="text" class="form-control"> 
</div> 

<ul> 
    <li><a href="abc.aspx">1</a></li> 
    <li><a href="def.aspx">2</a></li> 
    <li><a href="ghi.aspx">3</a></li> 
</ul> 
if ($("li a[href='abc.aspx']")) {     
    $("input.search-form").css('display', 'block'); 
} 
+1

如果頁面被轉移到'上點擊abc.aspx',然後在當前頁面元素的知名度是相當實際意義 - 頁面即將被銷燬 –

+0

我沒有點擊那個鏈接,只是找到它,並在母版頁上工作..要顯示div –

+0

爲什麼這個問題的負面投票,如果有些機構沒有答案,那麼它不需要投票。 –

回答

1

因爲對象是truthy值,而不是檢查長度屬性檢查它的存在的$("li a[href = 'abc.aspx']")將始終truthy。儘管您可以使用show()方法來顯示隱藏的元素。

if ($("li a[href = 'abc.aspx']").length) {     
    $("input.search-form").show(); 
} 

更具體的與toggle()方法。

$("input.search-form").toggle($("li a[href = 'abc.aspx']").length > 0); 
1

可以通過所有的元素li a循環和根據屬性href.attr("href")過濾元件。對屬性值的檢查可以讓您在值之間有所不同。這還允許您使用已定義的URL字符串列表(例如['abc.aspx', 'def.aspx', ...])並創建一個通用解決方案,您可以在該列表中循環查看。否則,對於通用解決方案,您需要創建並行字符串(li a[href='abc.aspx']),這並不是那麼簡潔。

$("li a").each(function() { 
    var href = $(this).attr("href"); 

    if(href === 'abc.aspx') { 
     $("input.search-form").css('display', 'block'); 
    } else if(href === 'def.aspx') { 
     $("input.search-form").css('display', 'block'); 
    } else if(href === 'ghi.aspx') { 
     $("input.search-form").css('display', 'block'); 
    } 
} 
1

我沒有點擊該鏈接就只是發現它

直接在if條件使用jQuery對象總是等同於true。因此,您需要使用jQuery對象的length屬性來發現找到的元素的數量。

對於您的情況,您可以對要顯示的內容使用toggle()方法,並檢查相關a元素的選擇器的length屬性。試試這個:

$('.input.search-form').toggle($("li a[href='abc.aspx']").length != 0); 

Working example

相關問題