2013-06-19 37 views
0

加載頁面時,我通過ajax/php進行數據庫調用以獲取動態列表。該名單顯示細膩,看起來是這樣的:一旦列表完成裝載我想根據我在網頁上動態加載內容如何在動態創建的列表中找到字符串

<ul id="menu"> 
<li><a href="#page-bla">bla</a></li> 
<li><a href="#page-bla2">bla2</a></li> 
<li><a href="#page-bla3">bla3</a></li> 
</ul> 

,所以我抓住頁面的URL,在這種情況下,讓說是bla3。我想查看列表並獲取包含bla3的li項目的URL(href)。

我想下面這樣的東西可以工作,但事實並非如此。

$(document).ready(function() { 
    $('#menu').on('load', function(){ 
     var pageID = $('#menu li a[href$="?bla3"]').attr('href'); 
     alert(pageID); 
    }); 
}); 

的問題(我假設)是#menu沒有加載速度不夠快,因此對#menu加載之前加載事件火災,我已經與身體嘗試過了,那也不能工作。本質上,我只是需要一段時間來查看它後面的動態生成列表,並且它所在的頁面已完全加載。

任何想法?

+0

,能得到任何警告呢?刪除'?''$('#menu li a [href $ =「?bla3」]')。attr('href')'應該是'$('#menu li a [href $ =「bla3」] ').attr('href')' – PSL

+0

其實呢?是一個錯字,但沒有我沒有得到戒備。我將事件從負載切換到懸停,並將其指向li,並且它工作正常,所以pageID是正確的,負載事件是什麼不起作用。 – RAC

+0

您需要爲您的問題添加更多詳細信息,插件是用於插件等的,並嘗試設置小提琴。是您正在使用的菜單插件提供的事件的加載事件? – PSL

回答

0
<body onload="findList()"> 

然後,你需要這個功能,在您的<head>

<head> 
<script type="text/javascript" language="javascript"> 
function findList() { 
var list = document.getElementById("menu").getElementsByTagName("li"); 
var contains = "bla3"; 
var patt = new RegExp(contains,"g"); 
for (var x=0;x<list.length;x++) { 
    if (list[x].match(patt).length>0) { 
    var hrefVal = list[x].childNodes[0].href; 
    alert(hrefVal); 
    } 
} 
} 
</script> 
</head> 
0

首先,好像你需要的一種方式是等待你的菜單。您可以嘗試輪詢元素的DOM。

這裏有一個粗略的小提琴,似乎模擬你描述:http://jsfiddle.net/rkLVx/1/

var menuHasArrived = function (fn) { 
    console.log('checking...'); 
    if ($('#menu').length) { 
     fn(); 
    } else { 
     setTimeout(function() { 
      menuHasArrived(fn); 
     }, 1000); 
    } 
} 

menuHasArrived(function() { 
    alert($('#menu li a:contains(bla2)').attr('href')); 
}); 

setTimeout(function() { 
    $('body').append(
     '<ul id="menu">' + 
     '<li><a href="#page-bla">bla</a></li>' + 
     '<li><a href="#page-bla2">bla2</a></li>' + 
     '<li><a href="#page-bla3">bla3</a></li>' + 
     '</ul>'); 
}, 2000); 

好運

相關問題