我现在有.live方面工作,所以如果点击链接,我的功能会被执行,但我想弄清楚如何包含一个直接链接到内容的选项。像这样:
$(showDiv).is('shipping-timeline')
or
$("#inm_if_hc_shipping_timeline").live('click', function() {
[code to show and hide divs]
});
showDiv包含标识从URL中提取的正确ID的值。
我的问题:如果两种情况都属实,我如何构造要执行的IF语句?
有人可以帮忙吗?谢谢!
更新
所以我从Graydot的答案中获取了IF部分并将其应用到我的代码中,这是一个更完整的例子,它现在看起来像:
$("#inm_if_hc_faq").bind('click', function(e) {
if(showDiv == 'faq') {
// prevent default behavior
e.preventDefault();
$("#inm_if_hc_content_faq").show("slow");
$("#inm_if_hc_content_shipping_timeline").hide("fast");
}
});
我缺少的最重要的部分是默认行为和覆盖它的IF ...感谢Graydot!
现在,当点击链接时,div会显示它应该显示的内容,但不会在输入URL时显示。
示例:http://myurl.com/thispage.html?show=faq
我没有在此处包含填充变量showDiv的函数,但我已在控制台中验证它包含'faq'应该。
有人看到我仍然缺少的东西吗?
谢谢!
最终更新:解决方案
起初我并不理解,但解决方案证明是重新思考我的方法。我很欣赏有人可以看透我的无知并想出一个很好的解决方案。
这是工作代码示例:
$(window).bind('hashchange', function () {
var hval = location.hash.slice(1);
if (hval == "faq") {
$("#inm_if_hc_content_faq").show("slow");
$("#inm_if_hc_content_shipping_timeline").hide("fast");
}
});
$(document).ready(function() {
$(window).trigger('hashchange');
});
这样,链接可以像 href =“#faq”一样简单,也可以从其他页面 href =“http://mydomain.com/mypage#faq”。无需解析变量的URL或使用IF语句来区分导航链接或外部链接。
希望这有助于其他人,所以我不必感到如此无知! ;)
答案 0 :(得分:1)
也许使用#标签?通过绑定到“hashchange”事件而不是“click”事件,您应该能够获得所需的结果。
// run specific code based on the url hash
$(window).bind('hashchange', function () {
var hval = location.hash.slice(1);
if (hval == "timeline") {
// run whatever code or function you like
}
});
// trigger it on page load
$(document).ready(function () {
$(window).trigger('hashchange');
});
现在只需使您的可点击链接看起来像
<a href="#timeline">click me</a>
你有一个可点击的,可收藏的JavaScript功能。每当URL哈希发生变化时,哈希变换事件将立即被触发。
答案 1 :(得分:1)
Jsfiddle http://jsfiddle.net/xff82/
<body>
<a href="#target_div">Toggle</a>
<div id="target_div">Some content</div>
</body>
脚本将是
<script type="text/javascript">
$(document).ready(function(){
$('a').bind('click', function(e){
// check that target points to a id, rudimentary check
var target = (/#\w+/).exec(this.href); // null if does not match
if (target){
// prevent default behavior
e.preventDefault();
//jQuery toggle. show/hide div
$(target[0]).toggle();
}
})
});
</script>