jQuery如果var=value或#id被单击
我现在有了.live特性,所以如果单击链接,我的函数就会执行,但我正在试图弄清楚如何包括一个直接链接到内容的选项。大概是这样的:jQuery如果var=value或#id被单击,jquery,hash,if-statement,hyperlink,Jquery,Hash,If Statement,Hyperlink,我现在有了.live特性,所以如果单击链接,我的函数就会执行,但我正在试图弄清楚如何包括一个直接链接到内容的选项。大概是这样的: $(showDiv).is('shipping-timeline') or $("#inm_if_hc_shipping_timeline").live('click', function() { [code to show and hide divs] }); showDiv包含从URL提取的标识正确id的值 我的问题是:如果两种情况都
$(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覆盖它。。。谢谢格雷多特
现在,当单击链接时,div会像它应该显示的那样显示,但在输入URL时不会显示
例如:
我没有在这里包含填充变量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语句来区分导航链接和外部链接
希望这对其他人有帮助,这样我就不会感到如此无知了!;) 也许可以使用标签?通过绑定到“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哈希发生更改时,就会立即触发哈希更改事件。Jsfiddle here
一些内容
剧本应该是
<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>
$(文档).ready(函数(){
$('a').bind('click',函数(e){
//检查目标是否指向id,基本检查
var target=(/#\w+/).exec(this.href);//如果不匹配,则为null
如果(目标){
//防止默认行为
e、 预防默认值();
//jQuery切换。显示/隐藏div
$(目标[0]).toggle();
}
})
});
问题不清楚!!!请解释清楚一点。对不起,可以解释清楚一点。请发布你正在使用的链接的html,以及你打算如何区分它是一个实时链接还是链接。我的问题可能还不够清楚。我只是想弄清楚如何将这两种情况组合成一个IF语句,这样,如果其中任何一种情况都是真的,我的代码就会出现。为什么hashchange事件不适合您的需要?我想我只是对它理解得不够。当我搜索hashchange时,我看到很多对jQuery hashchange插件的引用。你用的就是这个吗?仔细看看你的答案,我知道这可能是一个更好的解决方案,不管链接是在同一个页面上还是在另一个页面上,它都会起作用,对吧?请忽略我上面所显示的无知程度。你的解决方案规则!重量比我想做的要轻得多。感谢您消除了我的理解不足,并为我提供了更好的解决方案!
<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>