Как использовать значение атрибута элементов в качестве селектора с jQuery - PullRequest
0 голосов
/ 21 июля 2010

Я пытаюсь использовать элемент title якоря, чтобы определить, в какой элемент блока целевая загрузка загружается через ajax, в настоящее время это выглядит так:

$(document).ready(function() {
    $('#content').load('overview.php'); //by default initally load text from overview.php
    $('body').delegate('a.ajax', 'click', function(e) { //start function when any link is clicked
        e.preventDefault();
        var content_show = $(this).attr("href"); //retrieve href of link so we can load the correct file
        $.ajax( {
            method: "get", url: content_show,data: 0,
            beforeSend: function(){$("#loading").show("fast");}, //show loading just when link is clicked
            complete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is complete
            success: function(html) { //so, if data is retrieved, store it in html
                $($(this).attr("title")).show("slow"); //animation
                $($(this).attr("title")).html(html); //show the html inside the target div
            }
        }); //close $.ajax(
    }); //close delegate(
}); //close $(

Весь смысл в том, что ямогут иметь ссылки, которые нажимаются на одной странице с заголовком #content load в содержимом div, а ссылки с заголовком, установленным на #subcontent load в subcontent div.Возможно ли это, и если да, то, что я делаю неправильно?

Обновление ок, так что, по-видимому, происходит изменение в переменной $ (this) при входе в вызов $ .ajaxтаким образом, помещая $ (this) .attr ("title") в переменную и затем вызывая переменную вместо селектора, она работает как задумано.

1 Ответ

1 голос
/ 21 июля 2010

Логика кажется мне достаточно здоровой. На ум приходят две возможные проблемы: вызов ajax может быть неудачным или тег title может не возвращать ожидаемую строку. По этой причине я бы предложил добавить обработчик ошибок ajax и некоторые дополнительные console.log s к вашей функции $.ajax, которые помогут вам понять, что происходит от firebug или веб-инспектора.

success: function(html) {
    console.log("The title tag is: " + $(this).attr("title"));
    $($(this).attr("title")).show("slow");
    $($(this).attr("title")).html(html);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
    console.log("An ajax error occurred: "+errorThrown);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...