【问题标题】:Putting a href click function into a if-else-statement将 href click 函数放入 if-else-statement
【发布时间】:2010-11-19 21:16:44
【问题描述】:
我有这个功能
$("a[href*=/category/movies/]").click(function() {
so.addVariable('stretching','fill');
so.write('mediaspace');
});
我想变成一个 if...else 语句。
如何定位 div#header_playlist_categories 内的链接
如果链接指向 '/categories/movies/' 以外的内容,则应用 else 语句?
【问题讨论】:
标签:
jquery
click
href
if-statement
【解决方案1】:
我认为您要做的是处理对div#header_playlist_categories 内的a 元素的所有点击。然后,如果链接的href 属性包含/category/movies/,则您想做一件事,如果不包含则做另一件事。如果是这样,您可以使用delegate() 很好地做到这一点:
$('#header_playlist_categories').delegate('a', 'click', function(e) {
e.preventDefault(); // I imagine you always want to disable the default action
if (this.href.indexOf('/category/movies/') !== -1) {
so.addVariable('stretching','fill');
so.write('mediaspace');
} else {
// do whatever else you want to do
}
});
【解决方案2】:
您可以像这样使用:not() 来获取其他链接:
$("#header_playlist_categories a:not([href*=/category/movies/])").click(function() {
//something else
});
或者便宜一点,在循环中检查:
$("a").each(function() {
if(this.href.indexOf("/category/movies/") !== -1) {
$(this).click(function() {
so.addVariable('stretching','fill');
so.write('mediaspace');
});
} else {
$(this).click(function() {
//something else
});
}
});
【解决方案3】:
您应该将delegate that event 发送到您的div#header_playlist_categories。
在您的回调函数中,访问被点击链接的“href”属性并根据其值分支您的处理程序。