2012-08-10 18 views
5

Ana sayfasından, ürün listeleme sayfasına giden bir bağlantım var. Ürün sayfasında genişleme/daraltma div var.jQuery url hash ise, olayı etkinleştir/javascript'i etkinleştir

URL'nin ne olduğuna bağlı olarak genişletmek için uygun div'a ihtiyacım var. Ben bazı denedim

<a href="javascript:ReverseDisplay('products4')" id="healthysnacks"> Healthy Snacks</a> 

:

Yani ana sayfasında bağlantı ı yukarıdaki bağlantıyı tıkladığınızda

<a href="/out-products.php#healthysnacks">healthy snacks</a> 

i ürün sayfasında bu etkinleştirmek çalışıyorum olduğunu Hash etiketini kontrol ederek tetikleyici tıklamayı bulduğum diğer kodlar ve bunların hiçbiri düzgün çalışmıyordu, sanırım bu ReverseDisplay js yüzünden. Lütfen herhangi bir fikir yardımcı olacaktır. jQuery kullanarak yerine, sen jQuery click yöntemi kullanabilirsiniz javascript: protokolü kullanılarak olduğundan

$(document).ready(function(){ 
    var id = window.location.hash; 
    $(id).trigger('click') 
}) 

:

sayesinde

cevap

6

Aşağıdaki değişiklikleri belgenin hazır işlevinde yapabilirsiniz. Ürününüz sayfa:

Basit düzeltme: jQuery id-seçicinin yana basitçe id seçicisi olarak window.location.hash değeri kullanın ve istenen elemanı hedeflemek için kullanabilirsiniz, #elementId olduğunu.

if (window.location.hash) { 
    $(window.location.hash).click(); //clicks on element specified by hash 
} 

Daha

: Yukarıdaki ek olarak, İşaretlemenize dışına js alır.

$('#healthysnacks').click(function(e) { 
    e.preventDefault(); 
    ReverseDisplay('products4'); 
}); 

Sonra bu yaptıktan sonra, yukarıdan $(window.location.hash).click() kodu kullanabilirsiniz. Ayrıca için link değiştirin: ...

<a href="#" id="healthysnacks"> Healthy Snacks</a> 
+0

@raminson 'window.location.hash' bir dizi verir, bu durumda '#healthysnacks' içeren bir kimlik seçici olarak çalışır. Muhtemelen postada bunu açıklığa kavuşturmalıyım, teşekkürler – nbrooks

+0

Evet, haklısın, hash mülkünün de # işaretini döndürdüğünü unutmuştum. – undefined

+0

çalışmıyor: \ –

3

Sen Location nesnenin hash özelliğini kullanabilirsiniz, aşağıdakileri deneyin:

$('#healthysnacks').click(function() { 
    // do something here 
}) 
+1

+1 size göre, aynı fikirde lol – nbrooks

+0

güzel bir çözüm, benim kurulum için mükemmel çalışır. Bununla ilişkili olası bir güvenlik hatası var mı?başka bir yerde bu tür bir kullanım için bazı regex sanitization gördüm .. – cukabeka

3

cevapları burada önerilen geçerlidir, ancak

bir jQuery seçicisi olduğu gibi window.location.hash kullanırken son derece dikkatli olun bu çünkü bir XSS güvenlik açığına yol açabilir. $() ayrıca bir HTML öğesi oluşturabilir ve özenle oluşturulmuş bir karma değeriyle, birisi rasgele JavaScript kodunu çalıştırabilir. onerror kod sona ereceğini

http://my-website.com/about#'><img src=x onerror=alert(/XSSed/)>

my-websites.com/about sayfa jQuery seçicisi içine window.location.hash kullanıyorsa Örneğin

için

, idam alıyorum.