Perdón por la extensión del post, traté de mantenerlo lo más corto y claro posible. Sin embargo, estoy seguro de que la solución es bastante simple.
tengo una mesa:
<table> <tr> <td class="title">John</td> <td class="content"><p>John is a nice guy</p></td> </tr> <tr> <td class="title">Mary</td> <td class="content"><p>Mary is a nice girl</p></td> </tr> </table>Al hacer clic en una celda de la primera columna, quiero que el contenido de la segunda columna se agregue a un editor visual de TinyMCE. Así que agregué el siguiente código, que funciona perfectamente:
$("td.title").on("click", function () { var thisRow = $(this).parents("tr"); var columnContent = $(thisRow).find(".content").html(); var tinyID = $(".acf-field-61dc2a9a0fefd").find("textarea").attr("id"); var tinyField = tinyMCE.editors[tinyID]; var tinyContent = tinyField.getContent(); tinyField.setContent(columnContent); });Ahora, al hacer clic nuevamente en la primera columna, quiero que el contenido de la segunda columna se elimine de tinyMCE (si existe y no se ha modificado, por supuesto), de esa manera la primera columna funciona como un botón de alternar. Así que modifiqué la función:
if ( tinyContent.indexOf(columnContent) > -1 ) { tinyField.setContent(''); } else { tinyField.setContent(columnContent); }Sin embargo, no hay absolutamente ninguna manera de hacer que esto funcione. Agrega el contenido, no hay problema, pero no lo elimina después de hacer clic nuevamente.
si reemplazo
if ( tinyContent.indexOf(columnContent) > -1 ) {por
if ( tinyContent.indexOf('John is a nice guy') > -1 ) {funcionará bien. Al hacer clic en John, se agregará "John es un buen tipo" en el tinyMCE, y al hacer clic nuevamente en John, se eliminará "John es un buen tipo".
Mi intuición fue que tiene algo que ver con el formato del contenido (html o texto), así que probé modificando las variables, por ejemplo:
var columnContent = $(thisRow).find(".content").text(); var tinyContent = tinyField.getContent({format: 'text'});Intenté muchas combinaciones, pero sin éxito. Realmente me frustra porque la función funcionó bien cuando el campo era un área de texto en lugar de un TinyMCE.
Gracias de antemano por cualquier aporte que pueda tener.