使用js click()将鼠标事件传递给函数

时间:2017-06-19 08:16:58

标签: javascript jquery

我有一个onclick如下

<div class="tablinks active" onclick="openmarket(event,this)" data-uid="1">

openmarket功能如下

function openmarket(evt, obj) {
    var i, tabcontent2, tablinks2;
    tabcontent2 = document.getElementsByClassName("tabcontent2");
    for (i = 0; i < tabcontent2.length; i++) {
        tabcontent2[i].style.display = "none";
    }
    tablinks2 = document.getElementsByClassName("tablinks2");
    for (i = 0; i < tablinks2.length; i++) {
        tablinks2[i].className = tablinks2[i].className.replace(" active", "");
    }
    document.getElementById(obj.getAttribute('data-uid')).style.display = "block";
    evt.currentTarget.className += " active";
}

这里我在这个函数中传递了2个参数,1)事件
2)对象

现在我尝试点击JS这个div,如下所示。

$("div [data-uid='1']").click();

但它不会起作用,因为我猜参数evt无效或与它应该不匹配。

任何人都可以帮助我吗?

谢谢。

修改 我收到了以下错误。

  

无法读取属性&#39; className&#39;未定义的

,错误行为evt.currentTarget.className += " active";

2 个答案:

答案 0 :(得分:-1)

您的选择器查询错误

更改$("div [data-uid='1']").click();

$("div[data-uid='1']").click();

这将返回jqueryclick click事件而不是鼠标单击事件

答案 1 :(得分:-1)

您可以使用简单的javascript:

效果很好。我只有一个div,use和id而不是一个类。

<!DOCTYPE html>

<html>

<head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
</head>
<!--I wish to append it here-->
<body>

    <div  class="tablinks active uid1" onclick="openmarket(event,this)" 
   data-uid="1" style="height:30px;width:50px;background-color:red;">
    </body>
</html>

<script type="text/javascript">
function openmarket(evt, obj) {
    var i, tabcontent2, tablinks2;
    tabcontent2 = document.getElementsByClassName("tabcontent2");
    for (i = 0; i < tabcontent2.length; i++) {
        tabcontent2[i].style.display = "none";
    }
    tablinks2 = document.getElementsByClassName("tablinks2");
    for (i = 0; i < tablinks2.length; i++) {
        tablinks2[i].className = tablinks2[i].className.replace(" active", "");
    }
    document.getElementById(obj.getAttribute('data-uid')).style.display = "block";
    evt.currentTarget.className += " active";
}
var list=document.getElementsByClassName("uid1");
for(var i=0;i<list.length;i++){
    list[i].click();
}
</script>