从函数中获取单击链接的文本

时间:2015-07-15 19:07:28

标签: javascript c# jquery

我想首先说我不是专家,也许甚至不是jQuery的中间用户,所有人都对此表示感谢。

这是我的小问题的模拟:

https://jsfiddle.net/c897enhy/

<a id="someRandomID_hypNotifSentTo_0" class="NotifSent2" href = "#">
    this is the text i want to get
</a>
<br>
<a id="someRandomID_hypNotifSentTo_0" class="NotifSent2" href = "#">
    this is the text i want to get 2
</a>
<br>
<a id="someRandomID_hypNotifSentTo_0" class="NotifSent2" href = "#">
    this is the text i want to get 3
</a>


if ($) {
    $(document).ready(function () {

        $("a[id*='_hypNotifSentTo_']").live("click", function ($e) {

            // Will post list of recipients to be removed from the file
            var x = $(this).text();
            alert(x);
            AjaxSuccessPopulateRecipients("restult");
        });

         function AjaxSuccessPopulateRecipients(result) {
             alert("asdf");
             var x = $('#NotifSent2').toString();
             alert(x);
             var x = $(this).text();
             alert(x);

             var recipients = $(this).text();
             alert("1");
             var recipientArr = recipients.split(',');
         }
       });
}

虽然,我能够从“点击”事件中获取活动链接的文本,但我无法从第二个函数中获取。

应用程序的工作方式是,第一个函数调用ajax c#文件,然后使用c#的一些结果将成功返回到第二个jquery函数。

我需要将从c#返回的结果与点击的超链接内部的结果进行比较,但是无法从“AjaxSuccess”函数中获取单击的文本。

4 个答案:

答案 0 :(得分:1)

当您使用Ajax函数时,您将失去$(this)的上下文($(this)将不再引用所单击的链接)。尝试添加一个可以存储上下文的变量,如下所示:

$(document).ready(function () {
var $that;
        $("a[id*='_hypNotifSentTo_']").live("click", function ($e) {

            // Will post list of recipients to be removed from the file
            $that = $(this);
 var x = $that.text();
            alert(x);
            AjaxSuccessPopulateRecipients("restult");
        });

         function AjaxSuccessPopulateRecipients(result) {
alert("asdf");
             //var x = $('#NotifSent2').toString();
              //alert(x);
            var x = $that.text();
            alert(x);

            var recipients = $(this).text();
            alert("1");
            var recipientArr = recipients.split(',');
         }
       });

答案 1 :(得分:1)

$(this)内的

AjaxSuccessPopulateRecipients引用了Widow对象,而不是被点击的锚标记。

只需将click事件的引用从click事件发送到第二个函数,就像这样

AjaxSuccessPopulateRecipients("restult", $(this));

将其用作此类上下文

function AjaxSuccessPopulateRecipients(result, context) { // <--- context refers to the anchor tag
  alert("asdf");
  var x = $('.NotifSent2').text();
  alert(x);
  var x = context.text();
  alert(x);
  var recipients = context.text();
  alert("1");
  var recipientArr = recipients.split(',');
}

答案 2 :(得分:1)

看看Function.prototype.call()

  

call()方法调用具有给定值的函数,   论据单独提供。

变化:

AjaxSuccessPopulateRecipients("restult");

致:

AjaxSuccessPopulateRecipients.call(this, "restult");

这样做会将正确的 this 值传递给您的函数。

答案 3 :(得分:0)

您不应该通过此$('#NotifSent2')选择器访问数据,因为#选择器是用于在页面上查找ID的JQuery语法,而您的元素是使用class="NotifSent2"构建的。 / p>

如果您希望从其他函数访问变量,则必须确保该变量在正确的范围内。

由于您的AJAX调用和AjaxSuccessPopulateRecipients()函数属于同一范围,因此您无法访问两者中的$(this)。

只需将您要使用的变量传递给您的函数,如$(this)AjaxSuccessPopulateRecipients("restult", $(this));