2017-08-07 28 views
-1

我應該如何構建一個名爲countryUrl()服用參數id<li>標籤的功能:在Ajax調用產生JavaScript和下拉菜單中的URL

<ul> 
    <li onclick="countryUrl(this.id)" id="20" value="Benin"> 
    <a href="#">Benin</a> 
    </li> 
</ul> 

和連接它/frame/theme/

$.ajax({ 
     type:"GET", 
     url :"/frame/theme1/"+myUrl, 
     dataType: 'json', 
     success: function(data) { ... 

難道是這樣的:

function countryUrl(id){ 
    return "/frame/theme/"+this.id; 
} 

那我怎麼把它傳遞給url:這個字段呢?

+0

你有一個鏈接存在,這是jQuery的一個URL存儲訪問的理想場所。另外,不要使用內聯'onclick'處理程序,因爲JavaScript屬於'.js'文件而不是'.html'文件。 – zzzzBov

+0

那麼你打電話的功能在哪裏? – epascarello

回答

0

首先,不要使用內嵌HTML事件屬性,如onclick。有一個variety of reasons why,而是從你的HTML代碼中分離你的JavaScript,並按照現代的標準,如下圖所示。

其次,雖然它是合法的id是一個數字,這不是一個好主意(尤其是向後兼容) 。

此外,li元素沒有value attr ibute。使用data-*屬性可以將自定義值存儲在HTML元素中。

最後,您不需要列表中的超鏈接來使列表項可點擊。

所有你需要做的是建立您的li元素(S)有一個click事件回調和回調提取從點擊li的數據,並使用它,因爲你需要。

// Get reference to the bullet: 
 
var li = document.getElementById("lstBenin"); 
 

 
// Set up bullet to be clickable: 
 
li.addEventListener("click", countryURL); 
 

 
// function that is called when bullet is clicked 
 
function countryURL(){ 
 

 
    // Create new URL based on the "data-value2" attribute 
 
    // of the element that was clicked: 
 
    var newURL = "/frame/theme1/" + this.dataset.value2; 
 
    console.log(newURL); // Test 
 

 
    // Make AJAX call using new URL 
 
    $.ajax({ 
 
      type:"GET", 
 
      url :newURL, 
 
      dataType: 'json', 
 
      success: function(data) { 
 
      } 
 
     }); 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li id="lstBenin" data-value1="Benin" data-value2="20">Benin</li> 
 
</ul>

+1

解釋正確答案的投票權。 –

+0

對不起,鼠標瘋了可能是:/謝謝你的正確答案! – road

0

你可以使用數據(「id」)而不是id。 然後你只需要使用counrtyUrl(this.data(「ID」)。 在$就調用中使用的參數從功能。