我的要求是交换到小部件。第一次用户点击小部件A标题时,我可以将本地信息/数据保存在某处(即用户点击的widgetId = A')现在我等待用户点击另一个小部件标题小部件B.
一旦控制传回原始功能现在我有关于Widget B id的信息,我可以交换。
<div>
<div class="widget header" id="WidgetA"> .... </div>
<div class="widget header" id="WidgetC"> .... </div>
<div class="widget header" id="WidgetB"> .... </div>
</div>
我在几周后看到了stackoverflow上的一个jquery代码,它将控制权发送回早期的点击事件,但从那以后我一直在搜索它,找不到任何地方。
之类的东西 -
$(..).on("click", function() {
// some more code
$(..).XXX("xxx", function(){
//on second click code flows directly here...
});
});
答案 0 :(得分:0)
&#34;返回到之前的点击事件&#34;并不容易/可能。 - 相反,定义一个函数来检查两个事件是否都已发生,某事如:
var widgetAclicked = false;
var widgetBclicked = false;
$("#WidgetA").click(function() { widgetAclicked = true; process(); }
$("#WidgetB").click(function() { widgetBclicked = true; process(); }
function process() {
if (!widgetAclicked) return;
if (!widgetBclicked) return;
// process when both clicked
}
如果你不想使用var
,你可以在小部件上存储,例如:
$("#WidgetA,#WidgetB").click(function {
$(this).data("beenclicked", true);
process();
});
function process() {
if ($("#WidgetA").data("beenclicked") != true
|| $("#WidgetB").data("beenclicked") != true)
return;
// process
}
这也使得添加/删除小部件更容易,而无需任何额外的代码:
// apply to all widgets
$(".widget").click(function {
$(this).data("beenclicked", true);
process();
});
然后您的process()
可以检查哪些已被点击以进行任何恶意处理。
答案 1 :(得分:0)
您可以将点击的元素ID存储在数组中,您将知道点击了哪些元素:
$(document).ready(function(){
var clickedElementsIds = [];
$('#widget header').on('click' function(event){
var clickedElementId = event.currentTarget.id;
clickedElementsIds.push(clickedElementId);
});
});
当您在数组中拥有ID时,您可以随意执行任何操作。