简体   繁体   English

如何在javascript中调用jQuery插件类

[英]how to call a jQuery plugin class inside javascript

I want to sort a table using Tablesort jQuery plugin. 我想使用Tablesort jQuery插件对表进行排序。

My html, has a select tag, on changing any option it calls searchXML() function from my.js.. 我的html有一个select标记,它在更改任何选项时会从my.js调用searchXML()函数。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    Select an option:
    <select onchange="searchXML()" id="input">
      <option></option>
      <option value="milk">Milk</option>
      <option value="tea">Tea</option>
      <option value="sugar">Sugar</option>
      <option value="juice">Juice</option>
      <option value="all">All</option>
    </select>

    <br />
    <div id="results">
    </div>

    <script src="http://code.jquery.com/jquery-1.11.0.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/my.js" type="text/javascript"></script>
    <script src="js/jquery.tablesorter.min.js"></script>
    <script src="js/jquery.tablesorter.widgets.min.js"></script>
</body>
</html>

My JavaScript, will show a table. 我的JavaScript,将显示一个表格。 but I want to add sorting functionality to my table using Tablesort plugin, so I included class="tablesorter" to my table tag. 但是我想使用Tablesort插件向表中添加排序功能,因此我在表标签中添加了class =“ tablesorter”。 but the tablesorter is not working... 但表排序器不起作用...

var product=[];
var quantity=[];
var date=[];
var grossprice=[];
var profit=[];
var divText=[];

function searchXML()
{

    if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    xmlhttp.open("GET","xml/test.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML; 

    x=xmlDoc.getElementsByTagName("ProductName");
          input = document.getElementById("input").value;
          size = input.length;
          divText=""
          if (input == "")
          {
              document.getElementById("results").innerHTML= "Please select a Product Name!";
              return false;
          }
          if (input === "all")
          {
                var y=xmlDoc.getElementsByTagName("entry");
                    for (i=0;i<y.length;i++)
                    {
                          date=xmlDoc.getElementsByTagName("Date")[i].childNodes[0].nodeValue;
                          product=xmlDoc.getElementsByTagName("ProductName")[i].childNodes[0].nodeValue;
                          quantity=xmlDoc.getElementsByTagName("Quantity")[i].childNodes[0].nodeValue;
                          grossprice=xmlDoc.getElementsByTagName("GrossPrice")[i].childNodes[0].nodeValue;
                          profit=xmlDoc.getElementsByTagName("Profit")[i].childNodes[0].nodeValue;
                          if (divText==="")
                          {
                            divText="<h2>The product details are:</h2><br /><table border=1 class=\"tablesorter\">";
                            divText+="<tr><th width=150>Date</th><th width=150>Product</th><th width=200>Quantity</th><th width=200>Gross Price</th><th width=200>Profit</th></tr>";
                          }
                          divText += "<tr><td width=150 align=center>" + date + "</td><td width=150 align=center>" + product + "</td><td width=200 align=center>" + quantity + "</td><td width=200 align=center>" + grossprice + "</td><td width=200 align=center>" + profit + "</td></tr>";
                    }
         }

          for (i=0;i<x.length;i++)
          {
              startString = x[i].childNodes[0].nodeValue;
              if (startString.toLowerCase() == input.toLowerCase())
              {
                  date=xmlDoc.getElementsByTagName("Date")[i].childNodes[0].nodeValue;
                  product=xmlDoc.getElementsByTagName("ProductName")[i].childNodes[0].nodeValue;
                  quantity=xmlDoc.getElementsByTagName("Quantity")[i].childNodes[0].nodeValue;
                  grossprice=xmlDoc.getElementsByTagName("GrossPrice")[i].childNodes[0].nodeValue;
                  profit=xmlDoc.getElementsByTagName("Profit")[i].childNodes[0].nodeValue;
                  if (divText==="")
                  {
                    divText="<h2>The product details are:</h2><br /><table border=1 class=\"tablesorter\">";
                    divText+="<tr><th width=150>Date</th><th width=150>Product</th><th width=200>Quantity</th><th width=200>Gross Price</th><th width=200>Profit</th></tr>";
                  }
                  divText += "<tr><td width=150 align=center>" + date + "</td><td width=150 align=center>" + product + "</td><td width=200 align=center>" + quantity + "</td><td width=200 align=center>" + grossprice + "</td><td width=200 align=center>" + profit + "</td></tr>";
              }
          }
          if (divText=="")
          {
              divText = "<h2>The product does not exist.</h2>";            
          }
          else
          {
              divText+="</table>";
          }
          document.getElementById("results").innerHTML= divText;

}

divText2=$(divText);
divText2.tablesorter();

my xml 我的xml

<?xml version="1.0" encoding="UTF-8"?>
<item>
      <entry>
        <ProductName>milk</ProductName>
        <Date>2/10/2007</Date>
        <Quantity>20</Quantity>
        <GrossPrice>100</GrossPrice>
        <Profit>20</Profit>
      </entry>
      <entry>
        <ProductName>sugar</ProductName>
        <Date>2/09/2009</Date>
        <Quantity>45</Quantity>
        <GrossPrice>1000</GrossPrice>
        <Profit>100</Profit>
      </entry>
      <entry>
        <ProductName>sugar</ProductName>
        <Date>2/09/2010</Date>
        <Quantity>40</Quantity>
        <GrossPrice>600</GrossPrice>
        <Profit>50</Profit>
      </entry>
      <entry>
        <ProductName>milk</ProductName>
        <Date>1/01/2001</Date>
        <Quantity>10</Quantity>
        <GrossPrice>50</GrossPrice>
        <Profit>10</Profit>
      </entry>
      <entry>
        <ProductName>tea</ProductName>
        <Date>2/09/2009</Date>
        <Quantity>45</Quantity>
        <GrossPrice>1000</GrossPrice>
        <Profit>100</Profit>
      </entry>
      <entry>
        <ProductName>tea</ProductName>
        <Date>2/09/2010</Date>
        <Quantity>4</Quantity>
        <GrossPrice>10</GrossPrice>
        <Profit>1</Profit>
      </entry>
      <entry>
        <ProductName>juice</ProductName>
        <Date>2/09/2014</Date>
        <Quantity>40</Quantity>
        <GrossPrice>1000</GrossPrice>
        <Profit>100</Profit>
      </entry>
</item>

how to fix this? 如何解决这个问题? Thank you 谢谢

divText="<h2>The product details are:</h2><br /><table border=1 class="tablesorter">";

should be: 应该:

divText="<h2>The product details are:</h2><br /><table border=1 class=\"tablesorter\">";

You are appending divText and you have applied tablesorter() to divText2 . 您将追加divText并且已将tablesorter()应用于divText2 Change your code in following way:- 通过以下方式更改代码:

  1. after the final else condition remove document.getElementById("results").innerHTML= divText; 在最终的其他条件之后,删除document.getElementById("results").innerHTML= divText;

  2. Paste this code:- 粘贴此代码:-

    var divText2 = $(divText); divText2.tablesorter(); $("#results").append(divText2);

Working fiddle example 工作小提琴的例子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM