2011-10-08 48 views
0

如何保存一行的標題值?這些都是title=%s:如何使用jQuery保存「a」的「title」屬性?

<a class="false" title=1106 href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a> 

<a class="false" title=1153 href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a> 

<a class="false" title=1175 href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a> 

...

我試過無數的變化的值,但他們沒有工作。這是我現在擁有的:

<script> 

$(document).ready(function() { 

    console.log("ready"); 

    $("a.false").click(function(e) { 
     $(this).closest("tr.hide").hide("slow"); 
     var main_id = a.title; 
     var display = "false"; 
     e.preventDefault(); 

    }); 

    $("a.false").click(function() { 

     $.ajax({ 
      url: "/useradminpage?main_id=%s&display=false", 
      data: {main_id: "main_id", display: "display"}, 
      success: function(data) { 
      display_false() 
      alert("4 - returned"); 
      } 

     }); 

    }); 
}); 
</script> 

這是關於此主題的第三個問題。我感謝任何幫助。謝謝。的

+0

'title'屬性的值確實應該用引號表示 – Clive

+0

@ Clive:正如其他人提到'var main_id = this.title;'的工作,給出標題的值。 – Zeynel

+0

我的意思是在你的HTML代碼中:-)'title = 1106'應該是'title =「1106」'。這只是良好的做法 – Clive

回答

2

我想你要做的是在你的AJAX請求中傳遞title屬性的值。如果是這樣的話,最容易做的事情會做這一切在一個事件處理程序(您是否能結合兩種不同的處理程序相同事件的原因?):

$("a.false").click(function(e) { 
    $(this).closest("tr.hide").hide("slow"); 
    var main_id = this.title; 
    var display = "false"; 
    e.preventDefault(); 
    $.ajax({ 
     url: "/useradminpage", 
     data: {main_id: main_id, display: display}, 
     success: function(data) { 
      display_false(); 
      alert("4 - returned"); 
     } 

    }); 
}); 

你的問題是目前main_iddisplay不在第二個事件偵聽器的範圍內,所以將會是未定義的(並且不應該引用它們,否則只是傳入字符串)。當您將data對象傳遞給ajax函數時,您並不需要將查詢字符串添加到URL中。

除此之外,當您爲main_id分配一個值時,您正在使用a.title。在這種情況下,a未定義,您將需要使用this,這將是對clicked元素的引用。

+0

@ James Allardice:謝謝!這看起來很漂亮,它的效果很好,謝謝你的詳細解釋。你能澄清一件事嗎?我錯誤地認爲我需要調用更新數據庫的函數「success:',這就是爲什麼我在那裏有'display_false();'的原因。但是,該行提供了一個'Uncaught ReferenceError:display_false is not defined',並且當我註釋到該行數據庫仍然更新時。那麼我需要在成功中加入什麼:'?文檔說「如果請求成功,將會調用一個函數」,這樣就會讓我感到困惑。再次感謝。 – Zeynel

+1

我想你所做的是試圖從'success'回調中的JavaScript調用一個PHP函數。這永遠不會起作用,因爲PHP在服務器上執行,而JS在客戶端執行。成功回調只是一個在AJAX調用執行完成時運行的函數。例如,您可以使用它向用戶顯示「成功」消息。 –

5

代替

var main_id = a.title; 

嘗試

var main_id = $(this).attr('title'); 

,因爲如果我沒有錯, 「一個」 沒有定義

2

我懷疑我可能失去了一些東西,但我懷疑你的問題是使用a.title而不是this.title

$("a.false").click(function(e) { 
    $(this).closest("tr.hide").hide("slow"); 
    var main_id = this.title; // or you could use the jQuery object approach: $(this).attr('title') instead 
    var display = "false"; 
    e.preventDefault(); 
}); 

原始方法中的問題是a將被解析爲一個變量,該變量尚未被賦值,也沒有被聲明,因此它將返回undefinednull(最好)。在each()方法的範圍內,您正在迭代單個節點;因此要訪問該節點的屬性/屬性,請使用this

+0

@ David Thomas:謝謝。是的,我在瀏覽器中遇到了一個未定義的錯誤。 – Zeynel

1

要通過jQuery訪問DOM元素的任何屬性,可以使用.attr() function。 在你的具體情況下,你會這樣做。

var main_id = $(this).attr('title'); 
相關問題