jquery函数没有在ajax函数内部调用

时间:2011-09-12 21:01:25

标签: javascript jquery ajax function jquery-selectors

所以即时尝试禁用使用<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%正常工作。所以我很难过。

3 个答案:

答案 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(...)