如何在页面加载时执行绑定到元素的javascript / jquery函数?

时间:2013-12-26 18:38:17

标签: javascript jquery ajax load

我在这个问题上遇到了困难,我找不到任何相关的问题(虽然我认为我已经使用了很多相关的搜索引擎(参考:标题)......所以这里是:< / p>

<td class="noprint">
 <a class="ui-button isbillable" onclick="switchBillable($(this))" value="1">Aanrekenbaar?</a>
 <a class="ui-button isbillable" onclick="switchBillable($(this))" value="2">Aanrekenbaar?</a>
 <a class="ui-button isbillable" onclick="switchBillable($(this))" value="...">Aanrekenbaar?</a>
</td>

我想在页面加载时执行AJAX请求(PHP),根据AJAX请求返回TRUE或FALSE,为ui按钮提供特定颜色。但是,此代码永远不会执行(使用&#39; alert()&#39;进行测试:

$(document).ready(function(){
    $( ".isbillable" ).load( function() {
        var prestId = $(this).val();
        $.ajax({
            url: "ajax/check_billable.php",
            data: { q: prestId },
            success: function () {
                if (response == true) {
                    $(this).removeClass('isbillable');
                    $(this).addClass('billable');
                }else{
                    $(this).removeClass('isbillable');
                    $(this).addClass('notbillable');
                }
            }
        });
    }).button({
        icons: { primary: "ui-icon-help" },
        text: false
    });
    $( ".billable" ).button({
        icons: { primary: "ui-icon-notice" },
        text: false
    });
    $( ".notbillable" ).button({
        icons: { primary: "ui-icon-check" },
        text: false
    });
});

使用Firebug我无法检测到任何AJAX调用,因此永远不会执行此代码 - 我已尝试使用load(),on(&#39; load&#39; ,,),bind()

2 个答案:

答案 0 :(得分:2)

load()元素上没有<a>个事件。如果您希望在加载页面时发生某些事情,只需将其放在document.ready处理程序的顶层。

您还需要使用context:选项在回调中提供$(this)

$(document).ready(function(){
    $(".isbillable").each(function() {
        var prestId = $(this).val();
        $.ajax({
            url: "ajax/check_billable.php",
            data: { q: prestId },
            context: this,
            success: function () {
                if (response == true) {
                    $(this).removeClass('isbillable').addClass('billable');
                }else{
                    $(this).removeClass('isbillable').addClass('notbillable');
                }
            }
        });
    }).button({
        icons: { primary: "ui-icon-help" },
        text: false
    });
    $( ".billable" ).button({
        icons: { primary: "ui-icon-notice" },
        text: false
    });
    $( ".notbillable" ).button({
        icons: { primary: "ui-icon-check" },
        text: false
    });
});

答案 1 :(得分:0)

尝试

$(window).load(function(){
    $( ".isbillable" ).load( function() {
        var prestId = $(this).val();
        $.ajax({
            url: "ajax/check_billable.php",
            data: { q: prestId },
            success: function () {
                if (response == true) {
                    $(this).removeClass('isbillable');
                    $(this).addClass('billable');
                }else{
                    $(this).removeClass('isbillable');
                    $(this).addClass('notbillable');
                }
            }
        });
    }).button({
        icons: { primary: "ui-icon-help" },
        text: false
    });
    $( ".billable" ).button({
        icons: { primary: "ui-icon-notice" },
        text: false
    });
    $( ".notbillable" ).button({
        icons: { primary: "ui-icon-check" },
        text: false
    });
});