调用自我的jQuery函数?

时间:2010-10-11 05:03:27

标签: jquery xml jquery-ui

我定义了以下功能:

function _getUserMatches(url, mDist, ui) {
  var dataString = 'dist=' + mDist;
  var optionsHTML  = 'Current Option: ' + mDist + '<br />';
      optionsHTML += 'Other Options:';
      optionsHTML += ' 2 <input type="radio" name="dist" id="dist" value="2" /> |';
      optionsHTML += ' 5 <input type="radio" name="dist" id="dist" value="5" />';
  $(ui.panel).append(optionsHTML);
  $.ajax({
    type: 'GET',
    url: url,
    data: dataString,
    dataType: 'xml',
    cache: false,
    success: function(xml) {

      $(xml).find('waypoint').each(function() {
        var uid  = $(this).attr('uid');
        var dist = $(this).attr('dist');
        var html = $('<div class="items" id="match_'+uid+'"></div>')
                   .html('<span class="search item" id="uid">'    + uid  + '</span>')
                   .append('<span class="search item" id="dist">' + dist + '</span>')
        $(ui.panel).append(html);
      });
    }
  });
}

请注意.ajax()调用,我正在向(tab)面板添加一些无线电输入。我怎样才能做到这一点,当用户选择其中一个选项时,它再次调用同一个函数,但是选择了它们的值(然后再次更新相同的ui.panel)

因此,如果最初使用_getUserMatches('test.php',1,ui)调用该函数;然后用户选择收音机4,它必须重新加载相同的功能但这次用4而不是1,因此_getUserMatches('test.php',4,ui);

test.php脚本根据设置的数字返回SQL记录。

有意义吗?

2 个答案:

答案 0 :(得分:0)

这样的东西?

var firstTime = true;

function _getUserMatches(url, mDist, ui) {
  ...
  $(ui.panel).append(optionsHTML);
  if (firstTime) {
    firstTime = false;
    $('input[name="dist"]').click(function() { _getUserMatches(url, this.value, ui); });
  }
  ...
}

此外,与您的问题无关,但您的单选按钮具有相同的ID。确保为所有元素提供唯一ID。

答案 1 :(得分:0)

因为你生成那些radiobutton,他们不会响应.click,因为从未附加事件, 正如卡萨布兰卡所说,你需要有不同的id,因此如果需要分组,就要使用类。

    $('input[name="dist"]').live("click", function(){ 
        _getUserMatches(url, $(this).val(), ui); 
    });

会更有效,因为click事件将被添加到dom加载后生成的所有元素。