一页上有多个jquery脚本

时间:2010-08-19 00:47:49

标签: php jquery html codeigniter

我对Jquery来说是全新的,并且遇到了一些问题,如果回答将来会有很大帮助。我有两个非常简单的问题 我正在使用codeigniter,HTML5和所有php页面。

我有一个'旁边'菜单,有4-5个部分,我希望能够关闭以节省空间。所以我使用了2个简单的slideToggle脚本。

$("a").click(function () {
   $('#cat').slideToggle('slow', function() {
    })
});    

$("button").click(function () {
  $('#dog').slideToggle('slow', function() {
    })
});     

问题是,如果我在两者上使用按钮,即使我要求脚本在2个不同的ID上运行,两个脚本都会运行(我知道狗和猫的事情很傻,我只是把它们扔进来看看是否有假身份证会起作用而且确实如此)

问题是,如何在两个脚本上使用按钮或href来保留样式?

我的第二个问题是你可以在.js文件上放置多个脚本以供包含吗?你会怎么做?每个都获得脚本标签或其他类型的分隔符吗?

感谢您的帮助,这些是我的前两个脚本。至少他们工作:)

    <div class="menu">
<h2>News Links</h2>

 <a href="#">Display</a>
 <!--
if I use "button" here, both scripts run on tandem
-->
<script>
 $("a").click(function () {
  $('#cat').slideToggle('slow', function() {
    })
});     

             benchmark-&GT;标记( 'links_start');     $ this-&gt; db-&gt; order_by('id','DESC');     $这 - &GT; DB-&GT;极限('10' );     $ query = $ this-&gt; db-&gt; get('links');     foreach($ query-&gt; result()as $ row)
        {     echo“link \”title = \“$ row-&gt; title \”target = \“_ blank \”&gt; $ row-&gt; name“;         }         $这 - &GT; benchmark-&GT;标记( 'links_end');

    ?>
   </ul>
   </div>
   </div>
   <div class="menu">
   <h2>Archives</h2>
   <button>Display</button> <!--if I use "a" here, both scripts run on tandem
     -->
    <script>
  $("button").click(function () {
  $('#dog').slideToggle('slow', function() {
    })
  });     
  </script>
  <div id="dog">
  <?php
$this->db->order_by('id', 'DESC');
$where = "publish";
$this->db->where('status', $where);
$this->db->select('id, title', FALSE);
$this->db->select('DATE_FORMAT(date, "%b %D %Y")AS date');
$this->db->from('posts');
$query = $this->db->get();
foreach ($query->result() as $row)          

3 个答案:

答案 0 :(得分:2)

您可以使用组合选择器:

$("a, button").click(function () {
    $('#cat').slideToggle('slow');
}); 

这样,当点击abutton时,您就可以运行相同的功能。

  

我的第二个问题是你可以在.js文件上放置多个脚本以供包含吗?你会怎么做?每个都获得脚本标签或其他类型的分隔符吗?

javascript'脚本'通常是指script标记所包含的文件,但该用法不明确。

您在帖子中的内容是javascript声明,可能位于您网页上的script标记内:

<script type="text/javascript">
    function helloWorld() {
        alert('Hello world');
    }
</script>

您可以执行此操作(内联到页面),或将包含的代码移出到.js文件并引用它:

<script type="text/javascript" src="myjavascript.js"></script>

您的myjavascript.js文件如下所示:

function helloWorld() {
    alert('Hello world');
}

myjavascript.js可以包含您想要的javascript。常见的方法是将分组功能放入单个javascript文件中,并将其包含在页面中。通过在每个使用它的页面上将script标记包含在内,可以轻松地重复使用您在多个页面上编写的javascript(我假设您已经使用jquery javascript库完成了此操作)。

您可以执行与jquery完全相同的操作,并将所有javascript转储到.js文件中,并使用script将其加载到您的页面中。

答案 1 :(得分:2)

我认为你想要的是这样的:

<button id="news_display">Display News</button>

<button id="archive_display">Display Archive</button>

$("#news_display").click(function () {
   $('#news').slideToggle('slow');
});    

$("#archive_display").click(function () {
  $('#archive').slideToggle('slow');
});   

这使用jQuery id selectors作为点击事件,就像您在匿名函数中所做的那样。这样,他们就是具体而独立的。

答案 2 :(得分:1)

重新:你的第二个问题:你发布的代码

$("a").click(function () {
    $('#cat').slideToggle('slow', function() {
    })
});

...是一个陈述。您可以将任意数量的语句编写到单个javascript文件或<script>标记中。如果您有多个JavaScript文件,则可以将它们连接到一个文件中,并从脚本标记中引用该文件。