我是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\"> </span> <span class=\"glyphicon glyphicon-chevron-left\"> </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");
}
};
答案 0 :(得分:3)
使用标记并在单击处理程序
中进行设置var clicked = false;
$('.toggler').click(function(){
clicked = true;
...
});
...
if(!clicked){
$(this).find(".toggler").trigger("click");
}
<强>更新强>
OP:
我已更新了我的问题,以便您可以查看。
尝试代码段
(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\"> </span> <span class=\"glyphicon glyphicon-chevron-left\"> </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;
答案 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);