Frame中的Data Attribute从JQuery返回undefined

时间:2013-03-22 23:16:31

标签: javascript jquery html5

html看起来像这样:

<ul class="categoryitems">
    <li><a data-url="../po/browse_po.php" href="welcome.php" target="main">PURCHASE ORDERS</a></li>           
    <li><a data-url="../po/po_email_config.php" href="welcome.php" target="main">PO EMAILS</a></li>     
</ul>

忽略它们不相关的href。我打算防止它们违约。

什么是相关的是jquery失败:

$('a').click(function()
    {
        alert($(this).parent().html()); //shows the a tag with the data-url attribute
        //$(this).data('url',"..someurl.com");
        alert($(this).data('url')); //returns undefined; when the previous line is uncommented works 
        alert($(this).attr('data-url')); //this works        
    });

如果它有所不同,则点击功能包含在:

$("#wndNavbar").ready( function() { 

});

因为它在一个框架中:

<frameset cols="<?=$gl_navbar_width?>,*" frameborder="0" framespacing="5" border="0">
    <frame id="wndNavbar" name="wndNavbar" src="nav_bar.php" scrolling="auto" marginheight="0" noresize>
    <frame name="main" src="welcome.php" scrolling="auto" marginheight="0" noresize>
</frameset>  

1 个答案:

答案 0 :(得分:2)

这不是您阅读data-url的方式。这是正确的方法:

alert($(this).data('url'));

alert($(this).attr('data-url'));

更新:由于以上似乎没有为您解决,您是否尝试过使用

$(document).ready(function() {

});

$("#wndNavbar").live(function() {

});

而不是

$("#wndNavbar").ready( function() { 

});

更新2:您似乎使用的是frame,而不是iframeready无法使用frame,因此您需要使用load

$("#wndNavbar").load( function() { 

});