javascript - div 上的 onclick 功能不起作用

标签 javascript jquery

我有一个函数可以在 keyup 事件上从数据库中获取记录。 这是我的代码:

function displaySearch(key) {
$.ajax({
    type:"POST",
    url:"searchprofile.php",
    data:{
        k:key
    },
    success:function(data){
       var details_arr=data.split("+");
        $('.searchresult').empty();
        for(var i=0;i<details_arr.length-1;i++){
            $('.searchresult').append("<div class='profile' id='searchprofile'><img class='profilepic' src='images/profile.jpg'/><div class='doctorname'><div class='pname' onclick='saveName("+details_arr[i]+")'>"+details_arr[i]+"</div></div></div>");
            $('.searchresult').show();
            $('.searchresult .profile').show();
        }
        details_arr.length=0;
    }
});
}

但我在这里收到 javascript 错误,提示“意外的 token 非法”。 如何为 onclick 函数提供 details_arr[i] 的值? 请帮忙。

最佳答案

因为你有 jQuery,所以你真的不应该内联代码。如您所见,这使得处理带引号的字符串中的引号变得更加困难(是的,您在 saveName 的参数周围缺少引号)。

你可以这样做:

  (function(i){
      $('.searchresult').append(
        "<div class='profile' id='searchprofile'>"
        + "<img class='profilepic' src='images/profile.jpg'/>"
        + "<div class='doctorname'>"
        + "<div id=someId class='pname'>"+details_arr[i] // <- give some Id
        +"</div></div></div>"
      );
      $('#someId').click(function(){saveName(details_arr[i])});
  })(i);
  $('.searchresult').show();

请注意,我使用闭包来确保我在回调中具有所需的值(而不是迭代结束时的值)。

小心拆分:在大多数浏览器上 "+aaa".split('+') 生成 ["", "aaa"] 而当你不不要迭代到数组的末尾,这个示例字符串会让你什么都不迭代。

关于javascript - div 上的 onclick 功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13875408/

相关文章:

Javascript过滤器检查多个值?

JavaScript worker : how to check if a message was received while running expensive task

JavaScript:正则表达式 - 不能以标点符号开始/结束,没有重复的标点符号

jQuery。 ASP.NET MVC 3. 日期选择器错误?

jquery - 迷你 jQuery 脚本使 div 消失而不是替换其内容

javascript - ajax成功但PHP文件无法运行

javascript - 如何将字符串转换为字符串属性

javascript - 如何定位元素第一次出现的第一个子元素

javascript - 切换 ng-show 时,slideToggle 函数停止工作

javascript - 使用 Jquery 剥离 HTML 标签