检查是否已在jquery中触发click

时间:2015-06-10 12:26:34

标签: jquery

我是jquery的新手,我很乐意帮助解决这个问题。

以下代码将触发"点击"对于" Div"与班级" Toggler"。我希望有一个if条件来首先检查"点击"已触发或未触发,如果未触发click,则运行以下命令。

                    $(this).find(".toggler").trigger("click");

再次感谢您的帮助:)

更新

由于没有一个答案对我有用,我将其余的代码放在这里。也许这可以让你更好地了解我的问题是什么,以及我应该如何使用你的代码。

这是主要代码:

(function ( $ ) {

$.fn.SideMenu = function( options ) {

    var oldCode, newCode, side;

    newCode = "";

    var settings = $.extend({
        side:"left",
        autoClose:true
    }, options );

    side = settings.side;
    autoClose = settings.autoClose;

    this.addClass("expandable sidebar");

    if(side=="left"){
        this.addClass("sidebar-left");
    }else if(side=="right"){
        this.addClass("sidebar-right");
    }else{
        this.addClass("sidebar-left");  
    }

    oldCode = this.html();

    newCode += "<div class=\"row\">\n";
    newCode += "    <div class=\"col-xs-12 col-sm-12 col-md-12 col-lg1-12\" data-side=\""+side+"\">\n"+ oldCode+" </div>\n";
    newCode += "</div>";
    newCode += "<div class=\"toggler\">\n";
    newCode += "    <span class=\"glyphicon glyphicon-chevron-right\">&nbsp;</span> <span class=\"glyphicon glyphicon-chevron-left\">&nbsp;</span>\n";
    newCode += "</div>\n";

    this.html(newCode);
//I should put a condition if the slider is open then close it, other wise open it.


    if(autoClose){
        $(this).find(".toggler").trigger("click");
            }


};

4 个答案:

答案 0 :(得分:3)

使用标记并在单击处理程序

中进行设置
var clicked = false;
$('.toggler').click(function(){
    clicked = true;
    ...
});
...
if(!clicked){
    $(this).find(".toggler").trigger("click");
}

<强>更新

OP:

  

我已更新了我的问题,以便您可以查看。

尝试代码段

&#13;
&#13;
(function($) {
  var clicked = false;
  $('.toggler').click(function() {
    clicked = true;

  });
  $.fn.SideMenu = function(options) {

    var oldCode, newCode, side;

    newCode = "";

    var settings = $.extend({
      side: "left",
      autoClose: true
    }, options);

    side = settings.side;
    autoClose = settings.autoClose;

    this.addClass("expandable sidebar");

    if (side == "left") {
      this.addClass("sidebar-left");
    } else if (side == "right") {
      this.addClass("sidebar-right");
    } else {
      this.addClass("sidebar-left");
    }

    oldCode = this.html();

    newCode += "<div class=\"row\">\n";
    newCode += "    <div class=\"col-xs-12 col-sm-12 col-md-12 col-lg1-12\" data-side=\"" + side + "\">\n" + oldCode + " </div>\n";
    newCode += "</div>";
    newCode += "<div class=\"toggler\">\n";
    newCode += "    <span class=\"glyphicon glyphicon-chevron-right\">&nbsp;</span> <span class=\"glyphicon glyphicon-chevron-left\">&nbsp;</span>\n";
    newCode += "</div>\n";

    this.html(newCode);
    //I should put a condition if the slider is open then close it, other wise open it.


    if (clicked) {
      $(this).find(".toggler").trigger("click");
    }


  }
});
&#13;
&#13;
&#13;

答案 1 :(得分:1)

或者,您可以使用html5 data-*属性来确定之前是否点击过:

<a class='toggler' data-clicked="false">SomeText</a>

$('.toggler').click(function(){
      $(this).data('clicked','true');
});

现在执行下面的行

$(this).find(".toggler").trigger("click");

您可以检查其data属性,如

if($(this).find(".toggler").data('clicked')!=="true")
   $(this).find(".toggler").trigger("click");

答案 2 :(得分:1)

您可以使用$(".toggler").click(function(){ $(this).data('clicked', 'clicked'); // other operations as is }); html5属性:

if($(this).find(".toggler").data('clicked') !== 'clicked'){
    $(this).find(".toggler").trigger("click");
}

然后您可以将其更新为:

hadoop distcp hdfs://nn1:8020/foo/a hdfs://nn1:8020/foo/b

答案 3 :(得分:0)

.trigger() 执行附加到给定事件类型的匹配元素的所有处理程序和行为。

要做你想做的事,你可以处理一个删除监听器的回调函数;

尝试添加以下内容:

    function removeHandler(){
    /*  */
    $(this).find(".toggler").off( "click", "**");
    }

    $(this).find(".toggler").on( "click", removeHandler);