如何使用jquery从html中提取元素?

时间:2012-12-03 00:20:58

标签: javascript jquery html css ajax

我有一个弹出框,列出了用户拥有的各种播放列表。点击后,我试图将与视频相关联的video_id添加到相应的播放列表中。我不确定如何实现这一点;用户点击popover中的链接,video_id(来自div #add)和所选择的播放列表(有多个用户生成名称的播放列表,但只有一个被选中)应该被提取。有什么建议吗?

    <script type="text/javascript">
   $(document).ready(function() {
       $("#muncher").click(function(event){
       event.preventDefault();
            $.ajax({
                 type:"POST",
                 url:"/edit_favorites/",
                 data: {
                        'video_add': $('#add').val(), // from form
                        'playlist_selected': $('#').val() //from form
                        },
                 success: function(){

                        $('#muncher').html("Added");


                    }
            });
            return false;
       });

    });
</script>   


<div id = 'muncher'>
    <div id = 'add'>12345</div>
    <a href = "#" id="munch" rel="popover" data-html="true" data-placement="right"  data-content= "<a href= '#'>Favorites</a><br>

                <a href = '#' class = 'Funny'>Funny</a><br>

                <a href = '#' class = 'test'>test</a><br>

                <a href = '#' class = 'test1'>test1</a><br>                     

    " data-original-title="Add to your plate">
            Munch
    </a>    
</div>

3 个答案:

答案 0 :(得分:0)

您可以尝试使用jquery data attribute将ID存储在A代码中。

或者您可以尝试获取previous sibling DIV标记,该A标记位于被点击的 $('#add').val(), 标记之上,然后使用.text()获取其值

此外,您不应该有多个具有相同ID的元素?听起来你有很多ID =“ADD”的物品?

在这种情况下,您可能需要从

中删除代码
 $('#add', $(this)).text(), 

{{1}}

答案 1 :(得分:0)

在HTML文档中,.html()可用于获取任何元素http://api.jquery.com/html/的内容,因此请尝试一下:

$('#add').html()

Daveo是正确的,你需要使你的div的id唯一,一个选项是使用播放列表ID和add。比如id="add_12345"

然后,在每个add_ [id变量] div中使用onclick内联而不是.click jQuery方法:

<div id="add_12345" onclick="addClick(this);">

获取id的javascript函数:

function addClick(element) {
    id = element.id.slice(element.id.indexOf("_") + 1);
    alert(id);
    //your ajax post code here
}

有几种方法可以处理您想要实现的目标,请查看这个非常好的stackoverflow Q&amp; A以获取有关此主题的更多信息: Getting the ID of the element that fired an event

您应该更改标记 12.2.2 Nested links are illegal

答案 2 :(得分:0)

对于确切地确定你要做什么感到困惑。每个视频都是播放列表的孩子吗?如果是这样,请尝试将this.id作为参数传递给onClick事件...

...click="toPlaylist(this.id)"

function toPlaylist(clicked) {
  var tempVideo = clicked;
  // Get a parent node ID like this...
  var tempList = $(clicked).parentNode.id;
  // Do something else...
  nextAction(tempVideo, tempList);
}

PS:您可能需要做类似的事情

  var tempVideo = '#'+clicked;    

...对于变量,我不确定。

希望这有用。