Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery设置工具提示文本_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用jQuery设置工具提示文本

Javascript 使用jQuery设置工具提示文本,javascript,jquery,html,Javascript,Jquery,Html,我有以下代码: var text = ""; $.ajax({ contentType: "application/json; charset=utf-8", dataType: "json", type: "POST", url: DataReview.BASE + "/Encryption/FetchLatestEditBy", data: JSON.stringify({ "ExtendedReport_id": dataRow["E

我有以下代码:

var text = "";
$.ajax({
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    type: "POST",
    url: DataReview.BASE + "/Encryption/FetchLatestEditBy",
    data: JSON.stringify({
        "ExtendedReport_id": dataRow["ExtendedReport_id"],
        "Report_id": dataRow["Report_id"]
    }),
    success: function (data) {
        text = data.ResultData;
    },
    error: function (data) {
        console.log(data);
    }
});

setTimeout(function () {
    console.log(text); //This displays the value
    $(this).attr('data-toggle', 'tooltip');
    $(this).attr('title', text);
}, 1000);
如您所见,我试图在setTimeout函数中设置工具提示文本。但它不会出现。当我用一些伪文本替换文本变量时,它就起作用了。但是变量值不起作用。

当您使用timeout时,它将在窗口范围内,而不在元素中。因此,您实际上是在向窗口添加属性

其次,不能保证ajax调用会完成,或者您可能会在ajax调用后使用超时等待太长时间。您应该在Ajax调用的成功回调中设置属性

第三,您可能需要手动触发工具提示,以便它获取更新的数据

var elem = $(this);
$.ajax({
    /* your code here, removed to simplify answer*/
    success: function (data) {
        elem.attr('data-toggle', 'tooltip');
        elem.attr('title', text);
        elem.tooltip().tooltip("show"); // might need to change this line based on actual library
    }
});

我假设ajax的成功需要更多的时间,因此在success函数中设置文本变量值之前首先调用setTimeout函数。尝试在onsuccess ajax函数中调用函数

var text = "";
$.ajax({
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    type: "POST",
    url: DataReview.BASE + "/Encryption/FetchLatestEditBy",
    data: JSON.stringify({
        "ExtendedReport_id": dataRow["ExtendedReport_id"],
        "Report_id": dataRow["Report_id"]
    }),
   success: function (data) {
      text = data.ResultData;
      settooltiptext();
   },
   error: function (data) {
       console.log(data);
   }
});

function settooltiptext()
{
    console.log(text); //This displays the value
    $(this).attr('data-toggle', 'tooltip');
    $(this).attr('title', text);
}

你能给我们看一个工作片段吗?@PraveenKumar:什么的工作片段?他指的是一个可以显示问题的实时版本或小提琴。@C0dekid:我不知道如何使用小提琴。但这很简单。文本变量的值在setTimeout函数中没有显示为工具提示,我不明白为什么。那么您使用的是bootstrap吗?虽然您对注释的计时完全正确,但显示的值表明它在这些特殊情况下工作。否则console.log将输出空字符串。我认为epascarello更接近问题所在,指出$this可能不是OP所期望的。有道理,我完全错过了console.log部分。谢谢你指出。谢谢你的回答!!: