【问题标题】:How do I call data from a div in a different div on click?如何在点击时从不同 div 中的 div 调用数据?
【发布时间】:2016-07-25 11:27:42
【问题描述】:

我正在尝试创建一个在线广播电台。作为该过程的一部分,当在页面的不同部分单击故事的播放按钮时,我需要我的播放器调用曲目/故事数据。

我正在使用 JSON 将数据调用到每个 div。我的故事数据如下:

<div class="play_button text-hide" 
data-id="{id}" 
data-title="{title}" 
data-storyurl="{fullUrl}" 
data-program="{category}" 
data-programurl="{category.fullUrl}" 
data-type="audio" 
data-src="{soundcloudLink}" 
data-item-type="story" 
data-pub-date="{addedOn}">
</div>

我如何将这些数据调用给我的播放器,这是一个单独的点击 div?

换句话说,我的页面将有多个带有音频文件的故事,并且每当点击其中一个时,我希望播放器显示

<div>
<a href="{fullUrl}">{title}</a>
<a href="{category.fullUrl}">{category}</a>
</div>

对于每个被点击的曲目/故事。

WBEZ 被用作示例。

【问题讨论】:

  • 您使用的不是jQuery吗?
  • 你考虑过使用 JSON 对象来存储数据吗?您可能还希望检查 AngularJS 框架以进行数据绑定。
  • 您可以使用 .attr() 函数:$(this).attr('data-title') 或者如果您将属性名称小写:data-fulltext="This is a span element" 那么您可以使用 .data() 函数: $(this).data('fulltext') .data 函数只适用于小写属性名称
  • @FDavidov 我正在使用 JSON 从服务器调用数据。我正在使用 angular 来调用 soundcloud 轨道。数据绑定会帮助我将页面上点击的任何曲目调用给播放器吗?
  • @PraveenKumar 我正在使用 Angular 从 Soundcloud 和 JSON 中调用音轨。你会推荐一些不同的东西吗?

标签: javascript jquery html angularjs json


【解决方案1】:

您可以默认隐藏您的数据,onclick 您可以将其设置为可见。

试试这个,

<html>
<head>
<style>
#panel, .flip {
    font-size: 16px;
    padding: 10px;
    text-align: center;
    background-color: #4CAF50;
    color: white;
    border: solid 1px #a6d8a8;
    margin: auto;
}

#panel {
    display: none;
}
</style>
</head>
<body>

<p class="flip" onclick="myFunction()">Tere Sang yara</p>

<div id="panel">
  <p>Tere Sang yara</p>
  <p>Movie : Rushtam</p>
  <p>Great Movie</p>
  <p>Listening now</p>
</div>

<script>
function myFunction() {
    document.getElementById("panel").style.display = "block";
}
</script>

</body>
</html>

希望它会有所帮助。 :)

【讨论】:

    【解决方案2】:

    如果您的问题是从 div 和播放器获取数据,应该这样做:

    $(".play_button").click(function(event){//click on the div with the information
        var el = $(this);//the div
        var dataToPass = {//your data in an object
            dataId: el.attr("data-id"), 
            dataTitle: el.attr("data-title"), 
            dataStoryUrl: el.attr("data-storyurl"), 
            dataProgram: el.attr("data-program"), 
            dataProgramUrl: el.attr("data-programurl"), 
            dataType: el.attr("data-type"), 
            dataSrc: el.attr("data-src"), 
            dataItemType: el.attr("data-pub-date")};
    
        //Send it to your player (not sure what your idea is)
    
        //You can access it like
        var test = dataToPass.dataId;//same goes for the others
    });
    

    回答您的评论:

    如果您在目标 div 上有一个类或一个 id,请说target:

    <div id = "target"> <a href="{data-storyurl}">{data-title}</a> <a href="{data-programurl}">{data-program}</a> </div>
    

    ,你可以这样做:

        $("#target").html(
    '<a href="'+dataToPass.dataStoryUrl+'">"'+dataToPass.dataTitle+'"</a>\
    <a href="'+dataToPass.dataProgramUrl+'">"'+dataToPass.dataProgram+'"</a>');
    

    第 2 行末尾的 '\' 仅用于字符串中的换行符


    现在

    一起(我删除了这部分未使用的变量(属性)):

    $(".play_button").click(function(event){//click on the div with the information
        var el = $(this);//the clicked div
        var dataToPass = {//your data in an object
            dataTitle: el.attr("data-title"), 
            dataStoryUrl: el.attr("data-storyurl"), 
            dataProgram: el.attr("data-program"), 
            dataProgramUrl: el.attr("data-programurl")};
    
        //Send it to the target div
         $("#target").html(
    '<a href="'+dataToPass.dataStoryUrl+'">"'+dataToPass.dataTitle+'"</a>\
    <a href="'+dataToPass.dataProgramUrl+'">"'+dataToPass.dataProgram+'"</a>');
    });
    

    【讨论】:

    • 所以如果我想发送代码以使结果如下所示:&lt;div&gt; &lt;a href="{data-storyurl}"&gt;{data-title}&lt;/a&gt; &lt;a href="{data-programurl}"&gt;{data-program}&lt;/a&gt; &lt;/div&gt; 我将如何访问它?
    • 这非常有效!非常感谢。顺便说一句,您知道是否有类似的方法可以完成您的代码在 AngularJS 中所做的事情?我希望我能弄清楚。此外,需要解决一些依赖关系,例如当数据未定义时不显示任何内容。如果仅此而已,再次感谢,我非常感激!
    猜你喜欢
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多