Ajax里面的Jquery返回的数据没有执行

时间:2011-10-08 08:31:28

标签: jquery ajax

我的网站上有一个使用jquery的页面。在jquery脚本中有使用css类的onclick事件,我也使用jquery ajax调用从我的数据库中获取数据,然后返回结果并通过网站上我的页面上的ajax加载结果。在ajax调用返回的结果中是在我的jquery脚本中具有onclick事件设置的css类。我的问题是当我通过ajax返回结果时onclick事件没有工作,如果我不使用ajax并且只是通过页面本身加载结果然后onclick事件工作。有没有办法让jquery onclick事件在ajax调用返回的数据中工作?

$('#myformsubmit').click(function(){
    var dataString = $('#myform').serialize();
    $.ajax({
        type:"POST",
        url:"/ajax/formaction/process.php",
        data:dataString,
        success: function(data) {
            var formdata = $.parseJSON(data);

            $('#myformsg').html(formdata.formmsg);
            $('html, body').animate({ scrollTop:0 }, '1000');

            if(formdata.status == 'success')
            {

                $('#myform')[0].reset();

            }
        }
    });
    return false;
});

然后我有点击事件的代码:

$('.selectoption').click(function(){
    var optionurl = $(this).attr('alt');
    window.location = '/option/view/' + optionurl;
    return false;
});

在ajax调用的结果中,selectoption类与一个按钮相关联,当我点击它时没有任何反应。当我直接通过页面加载结果时它可以正常工作。有什么建议吗?

4 个答案:

答案 0 :(得分:1)

我不清楚你在做什么,但你可以尝试使用'live' -

$('.selectoption').live('click',function(){
    var optionurl = $(this).attr('alt');
    window.location = '/option/view/' + optionurl;
    return false;
});

这会将click事件分配给所有'.selectoption'类,包括那些动态创建的类。

答案 1 :(得分:1)

我不清楚,但我猜你已经通过ajax更新了你的页面,并且元素(selectoption类)来自服务器并动态地插入到dom中。如果是这样,那么你肯定应该使用jQuery.live()方法,因为肯定(通过ajax)插入的元素没有绑定到你在document.ready事件中声明的click事件。 所以它应该是 -

$('.selectoption').live('click', function() {
   var optionurl = $(this).attr('alt');
   window.location = '/option/view/' + optionurl;
   return false;
});

答案 2 :(得分:0)

您需要使用jQuery.live()

$('.selectoption').live('click', function() {
    var optionurl = $(this).attr('alt');
    window.location = '/option/view/' + optionurl;
    return false;
});

答案 3 :(得分:0)

我的旋转:

$('.parent').delegate('.selectoption', 'click', function(event) {
  event.preventDefault();
  var optionurl = $(this).attr('alt');
  window.location = '/option/view/' + optionurl;
});

“。parent”只是我编造的选择器。你需要在页面上用一些元素替换它,它总是包含你的.selectoption,但绝不会被dom操作破坏。可能是你的'#myform'我相信。如果没有,一个包装div,如果你绝望,它可能只是'身体'。

我假设您要“返回false”,以防止默认行为。在我的例子中,我使用preventDefault()代替。