为什么此代码无法阻止页面刷新?
$('a').each(function() {
var me = $(this);
var mytarget = me.attr('href');
var is_link_to_self = mytarget.indexOf("index.php");
if(is_link_to_self !== false) {
me.live('click', function() {
$('#content').load(mytarget);
return false;
});
}
});
答案 0 :(得分:2)
我认为问题是由于以下条件而没有任何东西与你的锚点绑定:
if(is_link_to_self !== false) {
应该是:
if(is_link_to_self !== -1) {
当没有匹配发生时, indexOf
将返回-1,这是假的,但不完全是假的(如false
布尔值),因此条件永远不会评估为真。
编辑:我建议采用以下更简洁的方法:
$("a").filter(function() {
return this.href.indexOf('index.php') !== -1;
}).live("click", function(e) {
$("#content").load(mytarget);
e.preventDefault();
});
答案 1 :(得分:2)
indexOf运算符返回int而不是boolean,你应该检查-1,而不是检查:http://www.w3schools.com/jsref/jsref_IndexOf.asp
答案 2 :(得分:2)
未经测试但这样的事情会更简单:
$('a').live('click', function() {
if ( $(this).attr('href').indexOf("index.php") > -1 )
{
$('#content').load( $(this).attr('href') );
return false;
}
});
答案 3 :(得分:1)
正如Aron Rotteveel所说,你需要在选择器上直播:
$('a[href*="index.php"]').live('click', function() {
$('#content').load($(this).attr('href'));
return false;
});