【问题标题】:jquery load a specific #Div content from multiple html filesjquery 从多个 html 文件中加载特定的#Div 内容
【发布时间】:2011-01-16 13:54:26
【问题描述】:

我正在尝试为我的网站制作内容滑块。我有多个 HTML 文件,这些文件的结构是这样的:

<div id="title"><h2>Title of the Slide</h2></div>
<div id="image"><a href="http://mylink.com"><img src="image.jpg" width="600" height="300" alt="image"</a></div>
<div id="content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.</div>

我一直在尝试使用以下脚本获取内容(但没有成功)

<?php
function render($position="") {
    ob_start();
    foreach(glob("/slides/*.html") as $fileName) {
    $fname = basename( $fileName );
    $curArr = file($fname);
    $slides[$fname ]['title'] = $curArr[0];
    $slides[$fname ]['image'] = $curArr[1];
    $slides[$fname ]['content'] = $curArr[2];

    foreach($slides as $key => $value){

        ?>
          <div id="slide-title">
            <?php echo $value['title'] ?>
          </div>

          <div id="slide-content">
              <?php echo $value['content'] ?>
          </div>

          <div id="slide-image">
              <?php echo $value['image'] ?>
          </div>

        <?php
        }}
        ?>
    <?php
    return ob_get_clean();
}

但后来我知道了一个 jQuery 函数....(再次没有成功)

    jQuery.noConflict();
      (function($){
        $(document).ready(function () {    
          $('#slide-title').load('slides/slide1.html #title');
          $('#slide-content').load('slides/slide1.html #content');
          $('#slide-image').load('slides/slide1.html #image');
      });   
    })(jQuery);

现在我的问题是.....

  1. 我是否使用了正确的语法。

  2. 如何使用 jQuery 从多个文件中获取内容。

请注意:我的编程知识几乎是“0”。我刚刚开始学习它。

【问题讨论】:

    标签: php jquery function load


    【解决方案1】:
    $('#slide-title').load('slides/slide1.html #title');
    $('#slide-content').load('slides/slide1.html #content');
    $('#slide-title').load('slides/slide1.html #image');
    

    这会起作用,但不会很快。您正在对同一页面执行三个单独的请求。您可以使用 $.get 及其回调参数将它们轻松组合成一个:

    $.get('slides/slide1.html', function(html) {
        var $html = $(html);
    
        $('#slide-title').html($html.find('#title'));
        $('#slide-content').html($html.find('#content'));
        $('#slide-image').html($html.find('#image'));
    });
    

    请注意,我已将最后一行中的 slide-title 更正为 slide-image,因为我认为这正是您所需要的。

    【讨论】:

    • 哇,谢谢你的帖子。还有一个问题.....我如何从多个文件中获取循环。我的意思是这应该读取该文件夹(幻灯片)中的所有文件,并从每个文件中获取标题、图像内容并将它们分配给各自的 div。
    • @Vikram 您可以将该代码多次用于不同的 URL 和不同的元素 ID。很难准确地猜出你想要做什么。查看您的 PHP 代码的一个大问题是您有多个具有相同 ID 的元素。这是无效的,将不起作用。如果您想使用 Javascript 执行此操作,请提供您呈现的 HTML。
    【解决方案2】:

    Jquery 对远程文件系统上的文件没有直观的了解。但是,您可以执行以下操作:

    $(document).ready(function () {    
          for(var i = 1; i < 5; i++) {
            $('body').append('<div id="slide-content-'+i+'"></div>');
            $('#slide-title-'+i).load('slides/slide'+i+'.html #title');
            // ...and so on
          }
    });
    

    这将做一些类似于你试图用 PHP 做的事情。我不太了解 PHP,但这可能是一种更好的方法(取决于它的 DOM 处理能力),因为上面将为每个文件创建一个请求。

    【讨论】:

    • 嘿@Josh 感谢您的帖子,但这不是问题。我认为你没有抓住重点。
    • 这是不正确的。 OP 将 jQuery 对象传递到闭包中,因此可以毫无问题地使用 $
    • 错过了。我的错。修改后的答案。
    • @josh 在第二行显示语法错误。请更正代码。因为我根本不懂 JavaScript,所以我无法为您提供更多信息。我只是一个复制粘贴,
    • @Vikram,修正了错字。让我的语言交叉。
    【解决方案3】:

    您的 jquery 代码似乎是正确的。你得到的输出是什么?

    这是您要完成的任务的指针..

    http://www.electrictoolbox.com/load-content-jquery-ajax-select-element/

    让我知道这是否有帮助....

    【讨论】:

    • 嘿@Rajesh,感谢您的指点,但这不是问题所在。我想知道如何在一个循环中从多个文件中获取内容?
    • 哦,好吧...我以为 jquery 选择器没有加载内容...我有 PHP 新手,所以,将等待其他人回答这个问题 :)
    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多