所以即时尝试禁用使用<li>
函数从其他页面加载的某些.load()
个元素上的链接,但由于某种原因,我无法影响这些列表项。
var from_post = false;
$(document).ready(function() {
//so this is the function that loads in data from another page
$("#gallery").load('http://localhost/index.php/site/gallerys_avalible/ #gallerys_avalible'), function() {
console.log('hello');
// sense there are no other li elliments on the page i thought this
// would be okay. but this function never gets called, i've moved it
// all over i just recently attached it to the load function thinking
// that maybe if the load was not complete it would not run, but i
// have had no luck.
$('li').click(function (e) {
e.preventDefault();
console.log("I have been clicked!");
return false;
});
};
$('#addNew').click(function () {
console.log('i got called');
$('#new_form').fadeIn(1000);
});
$('form').submit(function() {
if(from_post) {
//submit form
return true;
} else {
//dont submit form.
return false;
}
});
任何帮助都会非常感激,哦,另一件事是我可以通过firebug运行这个功能,它可以100%正常工作。所以我很难过。
答案 0 :(得分:4)
您过早关闭了对.load()
的通话。你有:
$("#gallery").load('http://...'), function() {
只调用load然后声明一个函数。但是,该函数没有绑定到success
处理程序,它永远不会被执行。您需要)
位于函数声明的另一侧,以便该函数作为参数包含在您的加载调用中:
$("#gallery").load('http://...', function() {
...
});
修复此问题并使用您的代码:http://jsfiddle.net/gilly3/WdqDY/
答案 1 :(得分:2)
尝试面向未来的事件观察员,如实时或委托:
$('li').live('click', function(){})
或者,如果您知道父级,则首选此方法:
$('#gallery').delegate('li','click',function(){})
需要这个的原因是你的点击事件被绑定到绑定时页面上的元素。之后添加的任何li
都不会看到绑定,即活动或委托的工作方式。它们绑定到父节点并遍历每个子节点(在这种情况下单击)事件以查看该事件是否适用于现有子节点。
答案 2 :(得分:1)
使用.live('click', ...)
或.delegate()
代替.click(...)
。