2010-09-16 129 views
0

我有一个显示一些数据的页面。它使用php和mysql从数据库加载,我使用zend框架来处理所有这些。jQuery基本问题

在本页我有两件事情使用jQuery。一个是分页器,另一个是重击功能。

paginator工作正常。它以json的形式接收数据并将其应用于视图。我需要处理的所有功能都位于一个js文件中。在这个文件中,我听点击...

$(document).ready(function() { 
$("a#next").click(getProgramms); 
$("a#previous").click(getProgramms); 
$("a#page").each(function() { 
    $(this).click(getProgramms); 
}); 
}); 

现在我有一个问题,重击功能。它位于另一个js文件中。每次单击竖起大拇指按钮时,脚本都会提示“单击”。实际上,当您在使用分页程序之前单击时,会出现“单击”,但是当您在没有任何事情发生时执行该操作。但dom检查器中的html似乎是相同的。

在我thumpsup.js我只是

$(document).ready(function() { 
$("a.tp").click(thumpsUp); 
}); 

function thumpsUp() { 
alert("click"); 
} 

我不知道问题出在哪里。也许js文件互相干扰!?

function thumpsUp() { 
var url = window.location.hostname + '/programme/thumpsup/id/' 
     + $(this).attr('page'); 
$.post(url, { 
    "format" : "json" 
}, function(data) { 
    alert(data); 
}, 'html'); 
return false; 

}

回答

1

我猜paginator是重写你的元素,他们失去了他们的点击事件绑定。尝试使用live()代替事件绑定:

$(document).ready(function() { 
    $("a.tp").live('click',thumpsUp); 
}); 

function thumpsUp() { 
    alert("click"); 
} 
+0

感谢帮助。之前我只使用了一个文档准备功能。我把它分成两个功能来寻找错误......但仍然存在问题,现在显示点击。但是当我调用thumpsUp函数时,我提醒的数据是paginator数据,但url指向打印“测试”的视图...我在上面添加了一些代码。任何想法如何解决? – 2010-09-16 13:29:26

+0

我不认为有足够的信息可以肯定地回答。什么是'数据'被设置为?你是说$(this).attr('page')返回'test'?并且'测试'是否正确? – MacAnthony 2010-09-16 13:53:18

+0

好的数据是响应不是吗?该警报显示html代码,但由于url指向显示“test”的视图,因此它会打印另一个页面的代码oO – 2010-09-16 14:03:22

0

你可能有脚本文件(包括在你的标记)南辕北辙。这是我能想到的唯一的解决办法...

我敢肯定,你可以逃脱 $(document).ready()的(哪怕是令人难以接受的)。

+0

看起来他已经在使用两个$(document).ready()函数了。该命令可能会有助于第一次,但如果我的猜测是正确的,可能不会在分页程序再次使用后。 – MacAnthony 2010-09-16 13:17:26

+0

是的,这就是我的意思..他不应该使用两个文件准备好的功能 - 但他是... – 2010-09-16 13:24:05

+0

好吧,我误解了。我以为你建议他使用2 .ready()函数。 – MacAnthony 2010-09-16 13:54:53