Javascript - 模拟用户点击

时间:2017-05-11 07:15:32

标签: javascript jquery angularjs twitter-bootstrap

我有一个Web应用程序,可以包含许多选项卡(使用Bootstrap Pills和Tabs)。 用户单击命令(从命令菜单)或当用户单击现有选项卡中的实体(想象显示记录列表的选项卡,以及单击特定记录时)添加选项卡创建新选项卡,显示记录中的所有字段。

通过单击相应药丸右侧的小“X”关闭现有标签。

除了一件我无法找到可行解决方案的事情之外,这项工作顺利进行:

创建新标签后,用户必须点击“药丸”才能显示相应标签。

我已经设置了一个机制,使得Tab的控制器在其初始化结束时发出一个事件,该事件由同一个控制器接收,而不是处理Tabs创建(到目前为止,很好)。

在事件处理程序中,我尝试了几个选项 ACTIVATE 新选项卡但没有成功。所有选项都可以正确执行,但没有任何反应。

我尝试过的一些事情:

  1. angular.element(domElement).triggerHandler('click');

  2. this帖子中提出的解决方案,

  3. ...

  4. 如前所述,它们都没有错误地完成,但没有一个可以解决问题。

    任何建议都将受到高度赞赏(特别是如果它能够完成这项工作)。

    修改

    以下是一些描述应用相关部分的代码:

    HTML药丸和标签:

        <!-- Pills... -->
            <li ng-repeat="One_Tab in Running_Tabs" id="Pill_{{One_Tab.Tab_ID}}">
                <a href="#{{One_Tab.Page_Type}}_{{One_Tab.Instance}}" data-toggle="tab"><b>{{One_Tab.Title}} ({{One_Tab.Instance}})</b> 
                    <i class="glyphicon glyphicon-remove pull-right" 
                       style="display:block;float:right;cursor:pointer;background:red;color:white;margin:5px 0 0 10px;top:-5px;border:solid 4px red;border-radius:11px" 
                       ng-click="Close_Tab(One_Tab.Tab_ID)"></i>
                </a>
            </li>
        </ul>
    
        <!-- Tabs... -->
        <div class="tab-content clearfix">
            <div class="tab-pane" ng-repeat="One_Tab in Running_Tabs" id="{{One_Tab.Page_Type}}_{{One_Tab.Instance}}" ng-include="Build_Page_Refrerence(One_Tab.Page_Type)">
            </div>
        </div>        
    

    新标签控制器中的事件排放:

    $rootScope.$emit("Activate_Me",$scope.Tab_Forward_Info.Pill_Name) ;
    

    接待活动:

        $rootScope.$on('Activate_Me', function (event, Pill_Name) {
    
            console.log("Request received from new tab to become active: " + Pill_Name) ;
    
            $("#Pill_Name").click() ;
    
        }) ;
    

    注意:Pill_Name带有需要模拟点击的元素的名称。

    提交(触发)事件,由上面的代码接收,并使用正确的元素名称。

1 个答案:

答案 0 :(得分:-2)

如果可能的话,使用addclass

$( "#Pill_Name" ).addClass("class");

我没有其他解决方案抱歉 并且您可以使用.removeclass("class")更改标签