当前位置: 首页 > 知识库问答 >
问题:

如何使用$对jquery UI选项卡重新排序。fn。制表符和下划线。包裹函数

东郭臻
2023-03-14

我试图使用jqueryui$fn在这个plunkr中记录jquery选项卡。制表符,我将在这个函数中声明要重新排序的制表符,下面是代码片段,我使用了下划线JS wrap函数来完成它

$.fn.tabs = _.wrap( $.fn.tabs, function extendTabs( org, arguments ) {

        var movObject =  {"name": "fragment-3", "nextSibling": "fragment-2"}; 
        console.log( "calling tabs", this, arguments );
        // perform reordering here if needed

        var listItemTobeMoved = $("li[xe-for-section="+movObject.nextSibling+"]");
        var listItemTo = $("li[xe-for-section="+movObject.name+"]");

        listItemTo.insertBefore(listItemTobeMoved);

        org.apply( this, arguments );
    });


<div id="tabs">
  <ul>
    <li xe-for-section="fragment-1"><a href="#fragment-1"><span>One</span></a></li>
    <li xe-for-section="fragment-2"><a href="#fragment-2"><span>Two</span></a></li>
    <li xe-for-section="fragment-3"><a href="#fragment-3"><span>Three</span></a></li>
  </ul>
  <div id="fragment-1" xe-section ="fragment-1">
    Tab 1
  </div> 
  <div id="fragment-2" xe-section="fragment-2">
    Tab 2
  </div>
  <div id="fragment-3" xe-section="fragment-3">
    Tab 3
  </div>
</div>

选项卡的初始化可以很好地使用以下代码

$( "#tabs" ).tabs();

但当我传递额外的参数时,初始化失败并抛出如下错误:

$( "#tabs" ).tabs("select", 3);

错误:

未捕获类型错误:函数。原型应用:参数列表的typescript错误。js:12扩展为下划线。js:697(匿名函数)(索引):37(匿名函数)

选项卡项的选择基本上失败,如何处理。非常感谢。

共有1个答案

卫浩瀚
2023-03-14

我看到了几个问题时,看看plnkr:

首先,在jQuery UI的1.11.2版本中,您传递的初始化所选选项卡的选项略有不同。它应该像:

$("#tabs").tabs({active: 2});

如这里的文档所示:http://api.jqueryui.com/tabs/#option-活跃的

第二,我认为wrap方法非常聪明,但是当使用wrap时,第二个参数(wrapper函数)不采用wrapped函数采用的参数,而是采用一个参数,即wrapped函数。通过将换行符更改为此。。。

$.fn.tabs = _.wrap($.fn.tabs, function expandTabs(func) {
    //console.log( "calling tabs", this, arguments );
    // perform reordering here if needed
    var movObject = { "name": "fragment-3", "nextSibling": "fragment-2" };
    console.log("calling tabs", this, arguments);
    // perform reordering here if needed

    var listItemTobeMoved = $("li[xe-for-section=" + movObject.nextSibling + "]");
    var listItemTo = $("li[xe-for-section=" + movObject.name + "]");

    listItemTo.insertBefore(listItemTobeMoved);
    console.log(arguments);
    func.apply(this, arguments);
});

...除了更改上面提到的初始化行之外,我还能够获得所需的功能。

此外,我还需要在索引文件的plnkr中添加对下划线的引用:

<script src="http://underscorejs.org/underscore-min.js"></script>
 类似资料:
  • 问题内容: 我有一张像下面的桌子, 我想使用“名称”列按字母顺序重新排序,并使用此新顺序重置ID(自动递增),以得到以下结果 问题 :如何使用MYSQL执行此操作? 问题答案: 请问您为什么要这么做? 如果有人修改了任何名称值或插入了新行,则会使您的订购方案混乱。试图以表的其他位置(名称列)已经可用的PK顺序存储一些含义似乎是多余的,因此是个坏主意。 更好的解决方案是不用担心ID列的值,而在应用程

  • 问题内容: 如果我有列表,如何以任意方式重新排序商品? 编辑:我不想洗牌。我想以预定义的方式对它们进行重新排序。(例如,我知道旧列表中的第3个元素应成为新列表中的第一个元素) 问题答案: 你可以这样

  • 看看下面的伪C++代码: 有两个函数带有参数。参数计数大于三,但为了简单起见,例如设为三。 -它是模板函数,具有与相同的参数计数,并且参数具有与相同的类型。但是(!)参数上的顺序可以(或不能)不同。例如: 那么如何在中重新排序参数,以便使用正确的参数序列调用呢?

  • 我几乎没有元素。我可以拖放元素。。。但是,我的要求是我需要在放置后对元素进行排序(释放鼠标后,元素必须移动到目标位置)。请帮帮我。。。这是我使用的代码,

  • 问题内容: 如何使用Selenium WebDriver(又名Selenium 2)在现有的Firefox浏览器中打开新标签页? 问题答案: 以下代码将在新标签页中打开链接。 下面的代码将打开空白的新标签页。