HTML对象标签'data'属性不会随jQuery更改而更新

时间:2014-03-07 11:18:37

标签: javascript jquery html css

从这个JSFiddle可以看出:http://jsfiddle.net/cYxy7/1/

我正在使用jQuery来更改对象标签的'data'属性。但是,即使我能够更改源代码中的数据属性,对象的实际数据流也不会改变,并且播放相同的视频。有谁知道修复?

我尝试了一些'刷新'技术,到目前为止还没有任何工作。

HTML:

<object data="currentURL"></object>

jQuery的:

$(document).ready(function(){
    $('body').on('click', "button#switch", function() {
    $( "object" ).attr("data", newURL);
});        
})

6 个答案:

答案 0 :(得分:0)

重新加载flash对象非常棘手。

尝试使用这个简单的flashloaderSWFObject

答案 1 :(得分:0)

修改

我发现了一些更奇怪的东西。在更改对象的盒子模型之前,更改参数不起作用:

$(document).ready(function(){
    $('body').on('click', "button#switch", function() {

    $( 'object param[name="flashvars"]' ).attr("value", "hostname=www.twitch.tv&channel=liquidwifi&auto_play=true&start_volume=25");

     $( "object").attr('data',  "http://www.twitch.tv/widgets/live_embed_player.swf?channel=liquidwifi").hide().show(); 

});        
})

这完美有效:http://jsfiddle.net/W7NTd/1/


由于一些奇怪的原因,更改param值不起作用,只创建新的html似乎对我有用:

$(document).ready(function(){
    $('body').on('click', "button#switch", function() {
        $('object param[name="flashvars"]').attr('value', $('object param[name="flashvars"]').attr('value').replace('ivan', 'liquidwifi'));
        var new_html = $('#wrapper').html();
        $('#wrapper').html(new_html);
    });        
})

我为此添加了一个包装器。

See the fiddle

答案 2 :(得分:0)

您需要更新参数,然后更新数据属性:

$( "object param[name=flashvars]" ).attr("value", "hostname=www.twitch.tv&channel=liquidwifi&auto_play=true&start_volume=25");
$( "object").css('display', 'none');
$( "object").attr('data',  "http://www.twitch.tv/widgets/live_embed_player.swf?channel=liquidwifi").css('display', ''); 

请参阅http://jsfiddle.net/W7NTd/2/

答案 3 :(得分:0)

将此附加到您的代码中。这可能有所帮助。

 $("object param[name=flashvars]").attr("value", $("object").attr("data"));

答案 4 :(得分:0)

以下代码适用于我

$( "object" ).replaceWith('<object data="' + newURL + '"></object>');

答案 5 :(得分:-2)

原因是你没有改变参数值

更改对象attr时,也会更改param flashvars值

演示:     http://jsfiddle.net/cYxy7/3/

$(document).ready(function () {
    $('body').on('click', "button#switch", function () {
        alert("The object's 'data' attritube is currently: " + $("object").attr("data"));
        $("object").attr("data", "http://www.twitch.tv/widgets/live_embed_player.swf?channel=liquidwifi");
        $("param[name='flashvars']").attr("value", "hostname=www.twitch.tv&channel=liquidwifi&auto_play=true&start_volume=25");
        alert("The object's 'data' attribute is now: " + $("object").attr("data"));
    });
})

喝彩!