所以我有下面JQuery的代碼,這會改變一個dt的元件的背景顏色,其具有分配一個特定的類:
var match = $('.matchedOn:contains("' + matchedString + '")');
$(match).html($(match).html().replace(matchedString, "<span
style='background-color:#FFFF00'>" + matchedString + "</span>"));
此是$ .each循環的一部分,並且似乎可行,如果循環經歷一次迭代。例如,我有一個數據集,當需要突出顯示兩個可能的匹配時返回。爲了證明這一點,我將模擬一些示例文本,這將形成循環。
第一次迭代:字符串matchedString =你好
第二次迭代:字符串matchedString =世界
這兩個字符串是相同的DT元素中,因此,例如:
「這是你好世界範例字符串'
以上JQuery代碼似乎只看到單詞'你好'而不是'世界'
任何想法爲什麼?我調試並遍歷代碼,我可以看到兩個matchedString可變參數都設置正確。
編輯 好吧,抱歉耽擱,我已經成功地讓有問題的代碼將與答案幫助的保持。
$.ajax({
type: "POST",
url: "Default.aspx/GetPopUpData",
cache: false,
data: JSON.stringify({ messageId: messageId, messageType: messageType, aml: true }),
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr) {
var contentType = xhr.getResponseHeader("Content-Type");
if (xhr.status === 401 && contentType.toLowerCase().indexOf("text/html") >= 0) {
window.location.reload();
}
},
success: function (msg) {
var mtData = msg.d[0];
var tag13C = '';
var tag33BSeqB = '';
var tag50 = '';
var tag50SeqB = '';
var tag52 = '';
var tag52SeqB = '';
var tag53 = '';
var tag54 = '';
var tag55 = '';
var tag56 = '';
var tag56SeqB = '';
var tag57 = '';
var tag57SeqB = '';
var tag58 = '';
var tag59 = '';
var tag59SeqB = '';
var tag70 = '';
var tag70SeqB = '';
var tag72 = '';
var tag72SeqB = '';
var tag77B = '';
var violationCount = '';
if (messageType == "202") {
if (mtData["Tag13C"].length) {
tag13C = $.map(mtData["Tag13C"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag52"].length) {
tag52 = $.map(mtData["Tag52"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag53"].length) {
tag53 = $.map(mtData["Tag53"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag54"].length) {
tag54 = $.map(mtData["Tag54"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag56"].length) {
tag56 = $.map(mtData["Tag56"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag57"].length) {
tag57 = $.map(mtData["Tag57"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag58"].length) {
tag58 = $.map(mtData["Tag58"], function (ele) { return '<dd class=matchedOn>' + ele; }).join('');
}
if (mtData["Tag72"].length) {
tag72 = $.map(mtData["Tag72"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag50SeqB"].length) {
tag50SeqB = $.map(mtData["Tag50SeqB"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag52SeqB"].length) {
tag52SeqB = $.map(mtData["Tag52SeqB"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag56SeqB"].length) {
tag56SeqB = $.map(mtData["Tag56SeqB"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag57SeqB"].length) {
tag57SeqB = $.map(mtData["Tag57SeqB"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag59SeqB"].length) {
tag59SeqB = $.map(mtData["Tag59SeqB"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag70SeqB"].length) {
tag70SeqB = $.map(mtData["Tag70SeqB"], function (ele) { return '<dd>' + ele; }).join('');
}
if (mtData["Tag72SeqB"].length) {
tag72SeqB = $.map(mtData["Tag72SeqB"], function (ele) { return '<dd>' + ele; }).join('');
}
$('<div class=message><pre><dl><dt>Transaction Reference:</dt><dd>' + mtData["Tag20"] +
'</dd><dt>Related Reference:</dt><dd>' + mtData["Tag21"] +
'</dd>' + (tag13C ? '<dt>Time Indication:</dt><dd>' + tag13C : '') +
'</dd><dt>Value Date/Currency Code/Amount:</dt><dd>' + mtData["Tag32"] +
'</dd>' + (tag52 ? '<dt>Ordering Institution:</dt><dd>' + tag52 : '') +
'</dd>' + (tag53 ? '<dt>Senders Correspondent:</dt><dd>' + tag53 : '') +
'</dd>' + (tag54 ? '<dt>Receivers Correspondent:</dt><dd>' + tag54 : '') +
'</dd>' + (tag56 ? '<dt>Intermediary:</dt><dd>' + tag56 : '') +
'</dd>' + (tag57 ? '<dt>Account With Institution:</dt><dd>' + tag57 : '') +
'</dd>' + (tag58 ? '<dt>Beneficiary Institution:</dt><dd>' + tag58 : '') +
'</dd>' + (tag72 ? '<dt>Sender to Receiver Information:</dt><dd>' + tag72 : '') +
'</dd><dt>Ordering Customer:</dt><dd>' + tag50SeqB +
'</dd>' + (tag52SeqB ? '<dt>Ordering Institution:</dt><dd>' + tag52SeqB : '') +
'</dd>' + (tag56SeqB ? '<dt>Intermidary Institution:</dt><dd>' + tag56SeqB : '') +
'</dd>' + (tag57SeqB ? '<dt>Account With Institution:</dt><dd>' + tag57SeqB : '') +
'</dd>' + (tag59SeqB ? '<dt>Beneficiary Customer:</dt><dd>' + tag59SeqB : '') +
'</dd>' + (tag70SeqB ? '<dt>Remittance Information:</dt><dd>' + tag70SeqB : '') +
'</dd>' + (tag72SeqB ? '<dt>Sender to Receiver Information:</dt><dd>' + tag72SeqB : '') +
'</dd>' + (tag33BSeqB ? '<dt>Currency/Instructed Amount:</dt><dd>' + tag33BSeqB : '') +
'</dd></dl></pre></div>').appendTo('#mt202');
}
var amlData = msg.d[1];
if (amlData.length) {
$.each(amlData, function (index, item) {
var countries = ''; // intialize as empty string
var aka = '';
var identNum = '';
var listReason = '';
var names = '';
var reportCount = index + 1;
if (item.Countries.length) {
countries = $.map(item.Countries, function (ele) { return '<dd>' + ele; }).join('');
}
if (item.Aka.length) {
aka = $.map(item.Aka, function (ele) { return '<dd>' + ele; }).join('');
}
if (item.IdentNumbers.length) {
identNum = $.map(item.IdentNumbers, function (ele) { return '<dd>' + ele; }).join('');
}
if (item.ListingReasons.length) {
listReason = $.map(item.ListingReasons, function (ele) { return '<dd>' + ele; }).join('');
}
if (item.Names.length) {
names = $.map(item.Names, function (ele) { return '<dd>' + ele; }).join('');
}
var matchedItem = item.MatchedItem.trim();
var matchedTag = item.MatchedTag;
var senderBic = item.SenderBIC.trim();
var match = $('.matchedOn:contains("' + matchedTag + '")');
$(match).html($(match).html().replace(matchedTag, "<span style='background-color:#FFFF00'>" + matchedTag + "</span>"));
});
}
else {
$('<h2>Violation Report(' + amlData.length + ')</h2>').appendTo('#AMLresults');
}
}
});
$('#myModal').modal();
希望這有助於
編輯
所以第一循環與包含DT的一類matchedOn的內容創建一個DIV。可以包含更多匹配的第二個循環用於顯示aml匹配。
所以在Tag58中,'This is a test case,please hightlight me'這個詞被寫入模態。那麼aml循環就具有了匹配標籤,所以第一次圍繞命中是'測試用例',因此任何包含匹配類的標籤都需要測試高亮,等等。
請在[jsfiddle](http://jsfiddle.net/)上重新創建問題,並在您的問題中發佈鏈接。這將有助於! –
嗨palash,無法做到這一點,因爲代碼是使用後面的C#代碼動態構建的。 – CSharpNewBee
爲什麼在'.replace()'中有'matchedTag'?它不應該是'matchedString'嗎?我錯過了一些東西。你突出顯示這個詞還是整個'dt'? – skip405