处理回调函数中的Clicked元素

时间:2014-09-30 16:04:56

标签: jquery dom-traversal

我正在编写一些JS函数来处理元素点击并处理JSON响应。我遇到的问题是在点击功能之外引用点击的元素。

HTML模型:

<div class="container">
  <div class="link">
    <a href="#" onclick="linkify()">Test</a>
  </div>
  <div class="output">
    <textarea class="output-textarea"></textarea>
  </div>
</div>
<div class="container">
  <div class="link">
    <a href="#" onclick="linkify()">Test</a>
  </div>
  <div class="output">
    <textarea class="output-textarea"></textarea>
  </div>
</div>

和JS:

// link function
function linkify() {
    // save reference to click element
    activeElement = $(this);
    // make AJAX call
}

// callback function; the parameters of this function 
// are defined by an API and cannot be changed
function callback(json) {
    $(activeElement).closest('.container').find('.output-textarea').val(json);
}

jsFiddle这里:http://jsfiddle.net/Lqaw05j8/4/

在我的小提琴中,事件会触发并定义所有变量,但我的jQuery DOM遍历并不起作用。

1 个答案:

答案 0 :(得分:0)

您需要将this作为参数传递给函数:

<a href="#" onclick="linkify(this)">Test</a>

function linkify(element) {
    // save reference to click element
    activeElement = element;
    // make AJAX call
}

请注意,使用这样的全局变量不是将上下文传递给回调的最佳方法。如果用户在回调触发之前单击另一个元素,它将更改活动元素。考虑使用context: $.ajax()选项来传递上下文,或者使回调函数成为闭包。