将初始状态 (onCreate) 以及捕获单击事件时传递到 Jquery 函数的方法

Method to pass into Jquery function for initial state (onCreate) but also when a click event is captured

提问人:bp13 提问时间:6/1/2023 最后编辑:Barmarbp13 更新时间:6/1/2023 访问量:28

问:

我很难弄清楚如何正确触发与浏览器事件相关的此功能。目前,如果我使用,例如(我的函数名称是initRanker)

  <row label="r1"><span class="blueRow">Blue</span></row>
  <row label="r2"><span class="redRow">Red</span></row>
  <row label="r3"><span class="GreenRow">Green</span></row>
  <col label="c5" open="1" openSize="25" randomize="0"><span class="blueCol">Blue OTHER</span></col>
  <col label="c6" open="1" openSize="25" randomize="0"><span class="redCol">Red OTHER</span></col>
  <col label="c7" open="1" openSize="25" randomize="0"><span class="greenCol">Green OTHER</span></col>
  $ (window).load(function() {
   jQuery.onCreate("*",initRanker);           
  });   

它将在页面加载时工作,然后从那里中断。如果我改成:

   $ (window).click(function() {
   jQuery.onCreate("*",initRanker);           
    });  

它仅在捕获点击事件时才起作用。

我想知道如何修改它以基本上适用于两者,或者为如何实现该结果指明正确的方向。

任何帮助将不胜感激。

function initRanker() {
   if ($ (".blueRow").parent().is(":visible")) {
    console.log("Blue i am visible");
    $ (".blueCol").parent().show();
    $ (".redCol").parent().hide();
    $ (".greenCol").parent().hide();
    $ (".sq-cardsort-bucket-c6").hide();
    $ (".sq-cardsort-bucket-c7").hide();    
  }
  else if ($ (".redRow").parent().is(":visible")){
    console.log("Red i am visible");
    $ (".redCol").parent().show();
    $ (".blueCol").parent().hide();
    $ (".greenCol").parent().hide();
    $ (".sq-cardsort-bucket-c5").hide();
    $ (".sq-cardsort-bucket-c7").hide();    
  }
  else if ($ (".GreenRow").parent().is(":visible")){
    console.log("Green i am visible");
    $ (".greenCol").parent().show();
    $ (".blueCol").parent().hide();
    $ (".redCol").parent().hide();
    $ (".sq-cardsort-bucket-c5").hide();
    $ (".sq-cardsort-bucket-c6").hide();    
  } 
}
     
$ (window).load(function() {
   jQuery.onCreate("*",initRanker);           
});   
     
$ (window).click(function() {
   jQuery.onCreate(".blueRow",initRanker);           
});  
 
$ (window).click(function() {
   jQuery.onCreate(".redRow",initRanker);           
});  

$ (window).click(function() {
   jQuery.onCreate(".GreenRow",initRanker);           
});   
JavaScript jQuery CSS Google-chrome 调查

评论

0赞 Barmar 6/1/2023
onCreate()正在创建在事件发生时运行的侦听器。单击时添加另一个侦听器可能不是您想要的。你应该直接打电话。createinitRanker()
0赞 Barmar 6/1/2023
$(window).click(initRanker)
0赞 bp13 6/1/2023
@Barmar 我已经更新了我的函数调用。基本上现在它只适用于第一行和最后一行(或者如果我在卡片排序卡中向后走,那么所有卡片都会正确显示)。如果我如上所述只使用 onCreate() 本身,它仍然仅适用于初始页面加载。
0赞 bp13 6/1/2023
XML 单选问题: <radio label=“Q1”> <row label=“r1”><span class=“blueRow”>Blue</span></row> <row label=“r2”><span class=“redRow”>Red</span></row> <row label=“r3”><span class=“GreenRow”>Green</span></row> <col label=“c5” open=“1” openSize=“25” randomize=“0”><span class=“blueCol”>蓝色 OTHER</span></col> <col label=“c6” open=“1” openSize=“25” randomize=“0”><span class=“redCol”>Red OTHER</span></col> <col label=“c7” open=“1” openSize=“25” randomize=“0”><span class=“greenCol”>Green OTHER</span></col> </radio>
0赞 bp13 6/1/2023
单击列后,行将逐个显示 1

答: 暂无答案