2016-10-22 60 views
0

我有3個超鏈接和DIV隨機生成的PHP腳本與動態ID。例如,如何在hQuery標籤中的onMouseOver時在jQuery中分配動態元素ID?

<a href="http://www.example.com/find.php?id=xy1" id="xy1" onMouseover="analyze('final', 'xy1')">xy1</a> 
<a href="http://www.example.com/find.php?id=ay2" id="ay2" onMouseover="analyze('final', 'ay2')">ay2</a> 
<a href="http://www.example.com/find.php?id=am3" id="am3" onMouseover="analyze('final', 'am3')">am3</a> 

<div id="xy1"></div> 
<div id="ay2"></div> 
<div id="am3"></div> 

我想通過在jQuery的功能analyze()來顯示基於onMouseover事件的一些文本。例如,

function analyze(db, target) { 
    jQuery.ajax({ 
    type: "GET", 
    url: "toThumb.php", 
    data: 'db=' + db + '&id=' + target, 
    success: function(output){ $("#"+target).html(output); } 
    }); 
} 

這裏,元素的id #xy1必須自動基於onMouseover事件分配。像xy1作爲變量名的值。也許在下一個onMouseover事件它將是ay2am3

我試着用$("#"+target).html(output);設置它失敗......如果我單獨測試$("#xy1").html(output);$("#ay2").html(output);$("#am3").html(output);它工作正常。

我的編碼方式錯了嗎?或者,我可以使用this而不是傳遞參數嗎?

+1

不要兩次使用相同的ID。 – shubham715

回答

0

感謝Rahul Patel。我在編碼方面做了三處改動。

(1)刪除了id

<a href="http://www.example.com/find.php?id=xy1" onMouseover="analyze('final', 'xy1')">xy1</a> 
<a href="http://www.example.com/find.php?id=ay2" onMouseover="analyze('final', 'ay2')">ay2</a> 
<a href="http://www.example.com/find.php?id=am3" onMouseover="analyze('final', 'am3')">am3</a> 

(2)更改idclass

<div class="xy1"></div> 
<div class="ay2"></div> 
<div class="am3"></div> 

(3)改變到$("#"+target).html(output);$("."+target).html(output);

現在問題解決了...

3

您可以使用.data()

在你的HTML你必須通過你的ID在這樣的數據target屬性。

例子: -

<a href="http://www.example.com/find.php?id=xy1" data-target="xy1" onMouseover="analyze(this)">xy1</a> 
<a href="http://www.example.com/find.php?id=ay2" data-target="ay2" onMouseover="analyze(this)">ay2</a> 
<a href="http://www.example.com/find.php?id=am3" data-target="am3" onMouseover="analyze(this)">am3</a> 

<div id="xy1"></div> 
<div id="ay2"></div> 
<div id="am3"></div> 

然後在你的jQuery,你可以得到的數據值。並根據此數據值傳遞您的數據。

function analyze(this) 
{ 
    var getTargetId = $(this).data("target"); 
    $("#"+getTargetId).html(data); 
} 
+0

$(「#」+ getTargetId).html(data);'不會更改爲(例如)$(「#xy1」)。html(data);'。它仍然是一樣的。 –

1

首先,id在DOM中應該是唯一的。取而代之,您可以使用下面的類。

請檢查下面的工作演示。

function analyze(ele){ 
 
    $("."+ele.id).html(ele.innerHTML); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="http://www.example.com/find.php?id=xy1" id="xy1" onMouseover="analyze(this)">xy1</a> 
 
<a href="http://www.example.com/find.php?id=ay2" id="ay2" onMouseover="analyze(this)">ay2</a> 
 
<a href="http://www.example.com/find.php?id=am3" id="am3" onMouseover="analyze(this)">am3</a> 
 

 
<div class="xy1"></div> 
 
<div class="ay2"></div> 
 
<div class="am3"></div>

+0

謝謝。你的代碼很有趣,有些工作。但是,並不像我預期的那樣。 –

0

問題是由於文檔中重複的ID。根據W3C

id = ID

爲元素的唯一標識符。 文檔中不能有多個元素具有相同的id值。

此外,在不同容器中顯示項目時沒有任何意義,因爲您也可以簡單地使用PHP生成它們。

function analyze(node) { 
 
    $('#container').html(node.innerHTML /* whatever */); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container">(empty)</div> 
 

 
<a href="http://www.example.com/find.php?id=xy1" id="xy1" onmouseover="analyze(this)">xy1</a> 
 
<a href="http://www.example.com/find.php?id=ay2" id="ay2" onmouseover="analyze(this)">ay2</a> 
 
<a href="http://www.example.com/find.php?id=am3" id="am3" onmouseover="analyze(this)">am3</a>

+0

我的目標不是捕獲身份證。我正在嘗試僅在特定的DIV中顯示文本。 –

+0

@ ak-SE,嗯,我沒有提到捕獲一個ID。事實上,你不需要捕獲ID。那麼,我的答案包含一個「顯示文本特別是DIV」的示例代碼。您可以輕鬆地用另一個值替換節點ID。 –

+0

對不起,我的話。我不是那個意思。其實我想分配一個動態ID,像'$(「#xy1」)。html(output ....);'。這裏,id xy1必須自動改變。輸出將基於Ajax顯示。我剛剛闡述了我的問題。 –

相關問題