2016-07-14 1 views
1

У меня есть элементы html, входящие в функцию как строка, тогда я вставляю элементы в него как строку, но, к моему удивлению, это не сработало.Как я могу повторно использовать результат из JQuery для текстового соответствия javascript?

что-то вроде:

var replacement = $(row).find('td:last').append("<script type=\"text/javascript\"> function remove" + override.SessionKey + "(){ $('tr[session-key=\"" + override.SessionKey + "\"]').remove(); }</script><input type=\"button\" value = \"Remove\" onClick=\"remove" + override.SessionKey + "()\" />") 

row.replace($(row).find('td:last')[0],replacement[0]) 

После некоторого дальнейшего расследования я сузили его до соответствия неудачи в replace функции, в основном после того, как вы будете искать с JQuery результат не может быть использована для сопоставления текстуальное

Вот пример того, что я имею в виду:

var r = "<tr class=\"hide\" session-key=\"SessionProductDataMotorEnrichmentSagaFactorScore\" session-key-data-type=\"Decimal\"><td id=\"tdDisplayName91\">SagaFactorScore</td><td id=\"tdValue91\"></td></tr>" 
 

 
$('div').text(r.indexOf($(r).find('td:last')[0]));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<div></div>

Можно было бы всегда иметь совпадение, поскольку я использую содержимое исходной строки html.

Как можно использовать результат JQuery для текстового сопоставления?

+0

не ли 'jQuery.find() 'возвращает объект jQuery, содержащий объекты HTMLElement? –

ответ

2

Я думаю, что вы ищете .outerHTML:

var r = "<tr class=\"hide\" session-key=\"SessionProductDataMotorEnrichmentSagaFactorScore\" session-key-data-type=\"Decimal\"><td id=\"tdDisplayName91\">SagaFactorScore</td><td id=\"tdValue91\"></td></tr>" 
 

 
$('div').text(r.indexOf($(r).find('td:last')[0].outerHTML));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<div></div>

0

Это ужасный способ сделать то, что вы пытаетесь сделать.

var btn = $("<button></button>"); 
btn.attr("type","button").text("Remove").on("click",function() { 
    var tr = $(this).closest("tr"); 
    tr.remove(); 
}); 

Это создает кнопку со связанным событием, связанным непосредственно с ней. Вы можете добавить его ко всем строкам, например, вот так:

$("tr>td:last-child").append(function() {return btn.clone(true);}); 
+0

Пример, который я выбрал, немного глупо, я полагаю, что происходит более захватывающее событие. Полностью с вами согласен. Проблема в том, что сгенерированное украшение и т. Д. Вещь не может закончиться на экране неполным .... –