使用'this'在函数中引用我的XML

时间:2011-10-11 21:07:45

标签: jquery xml ajax this

我有以下脚本来查找XML文件并生成有序列表。结果显示在div框中,用户可以选择列表中的每个项目。单击列表中的项目时,将调用“选中()”功能。

一切正常,我可以列出数据,用户可以选择。问题是我想用XML结果填充表单并需要引用所选项目,我认为我可以使用this但是我收到错误。有人可以提供一些建议吗?

我省略了一些显示div框等的代码。

function searchaddress() {
    searchstring = $('#nam').val();
    chr = searchstring.length;

    $(document).ready(function() {
        $.ajax({ type: "GET",
                 url: "../241/NEWsearch_action.php?ss=" + searchstring ,
                 dataType: "xml",
                 success: searchxml });
    });
} 

// data returned from AJAX.php 
function searchxml(data) {
    var display = "";
    var msg = "";
    var currentWidth = 25;

    $(data).find('NameSearch').each(function() {
        numres = $(data).find('NameSearch').length;
        coursename = $(this).find('sitelist').text();
        address1 = $(this).find('address1').text();
        address2 = $(this).find('address2').text();
        postcode = $(this).find('postcode').text();
        number1 = $(this).find('number1').text();

        string = "<b> <a onclick='selected(" + **this** + ")' > " + coursename < /br> " ; 
        msg += string;
    }); // find loop
    $('#UniDivBody').html(msg);
}

function selected(e) {
    coursename = $(e).find('sitelist').text();
    // REFERENCE THE SELECTED DATA HERE???
}

1 个答案:

答案 0 :(得分:0)

首先放置这一行

numres = $(data).find('NameSearch').length ; 
.each调用之外

,因为每次numres函数循环遍历您的NameSearch时,您都会设置.each值。

其次

为什么不使用委托来委派您的点击事件。

$('#UniDivBody').delegate('a','click',function(){
    //declare the clicked <a>
    var $element = $(this),
    l_element = this;
    //this is going to pass through the <a> to the selected function
    selected(this);
})

你有一个实例吗?