如果td的类是“nee”,我试图用jquery模拟一次点击。不知何故,所有选项如触发器和文档就绪点击都不会起作用......
HTML:
<td align="center" class="one nee">
<img class="img-swap" src="images/nee.png" alt="Aanwezigheid"/>
</td>
触发操作:
$(document).ready(function(){
$('#some-id').trigger('click');
});
HTML返回的图像是变量,标准值是“ja.png”。但是,只要数据库中的项目设置为no,图像就会更改为nee.png。但是当触发时,我想要输入字段,就像我点击ja.png更改为nee.png时出现的那样。它是淡入淡出的。它是分开的。但我无法点击模拟..
图片更改代码:
$(document).ready(function(){
$(".img-swap").click("click", function() {
if ($(this).attr("class") == "img-swap") {
this.src = this.src.replace("ja","nee");
} else {
this.src = this.src.replace("nee","ja");
}
$(this).toggleClass("ja");
});
});
fadein行动代码:
$(document).ready(function(){
$(".nee").trigger("click");
$("td.one").click("click", function(){
if ($(this).parent().find("td.two, td.three").hasClass("toggled")){
$(this).parent().find("td.two").fadeOut(400);
$(this).parent().find("td.three").fadeOut(400);
$(this).parent().find("td.two").removeClass("toggled");
$(this).parent().find("td.three").removeClass("toggled");
} else {
if ($(this).parent().find("td.three").hasClass("DoNotWant")){
$(this).parent().find("td.three").fadeOut(400);
$(this).parent().find("td.three").toggleClass("DoNotWant");
} else {
$(this).parent().find("td.three").fadeIn(400);
$(this).parent().find("td.three").toggleClass("toggled");
}
$(this).parent().find("td.two").fadeIn(400);
$(this).parent().find("td.two").toggleClass("toggled");
}
});
$("td.two").click("click", function(){
if ($(this).parent().find("td.three").hasClass("toggled")){
$(this).parent().find("td.three").fadeOut(400);
$(this).parent().find("td.three").removeClass("toggled");
$(this).parent().find("td.three").toggleClass("DoNotWant");
} else {
$(this).parent().find("td.three").fadeIn(400);
$(this).parent().find("td.three").toggleClass("toggled");
}
});
});
任何可以帮助我的人?
现场示例在这里: http://bryan.limewebsolutions.nl/
答案 0 :(得分:1)
我没有触发点击,而是说存储对回调函数的引用会更容易,然后将该引用用作点击事件回调,然后再单独调用i,而不是触发点击事件。像这样:
var callback = function(){
if ($(this).parent().find("td.two, td.three").hasClass("toggled")){
$(this).parent().find("td.two").fadeOut(400);
$(this).parent().find("td.three").fadeOut(400);
$(this).parent().find("td.two").removeClass("toggled");
$(this).parent().find("td.three").removeClass("toggled");
} else {
if ($(this).parent().find("td.three").hasClass("DoNotWant")){
$(this).parent().find("td.three").fadeOut(400);
$(this).parent().find("td.three").toggleClass("DoNotWant");
} else {
$(this).parent().find("td.three").fadeIn(400);
$(this).parent().find("td.three").toggleClass("toggled");
}
$(this).parent().find("td.two").fadeIn(400);
$(this).parent().find("td.two").toggleClass("toggled");
}
};
// Bind the click event
$("td.one").click("click", callback);
$(function () {
// Instead of triggering a click, just call the function
callback();
});
在此示例中,为简化示例而忽略了td.two
的回调
旁注:
我相信你的逻辑存在问题,如果你有多个td与if语句中的选择器匹配。在这种情况下,在检查它是否具有类toggled
时,将始终使用匹配的第一个元素。 .hasClass()
将评估匹配元素集中的第一个元素。
使用较少的DOM遍历可以提高代码的效率。在回调中,在变量中保存对父项的引用,并使用该变量而不是每次都调用$(this).parent()
。
答案 1 :(得分:1)
.click()
是.bind('click')
的快捷方式,因此您无需向该函数提供事件类型(click
)。
将您的.click("click", function(){
更改为.click(function(){
,您的触发器应该可以正常运行。