在被jQuery更改后获取HTML元素的内容

时间:2015-06-05 09:10:02

标签: javascript jquery html

我有一个div

<div id="test" class="test">From 0 to 0</div>

然后有一个函数替换div的内容

function divChange(aArg)
{

var sText = "From" + aArg[0] + "to" + aArg[1];


$("#test").html(sText);
}

我无法控制此功能,也无法控制html。我可以以某种方式获取div的文本使用javascript更改后(我在网站上运行greasemonkey)。请注意,div的内容可以与更改前的内容不同或相同。

更新:抱歉,我忘了提一下。首先我开始搜索,然后会有一个异步函数运行,在获取所有数据(时间取决于它使用的数据库)之后它会调用这个。所以我想要的是在搜索后不立即更改div之后获取数据,否则结果不会正确。

简单的逻辑: 我开始调用一个我无法控制的功能 它将在一个未知的时间内运行。 3.完成后,它会调用一个函数来改变div的内容。 我想在此刻捕捉内容。

6 个答案:

答案 0 :(得分:2)

最基本的方法是不断轮询:

update table_name set roll_no = 'Z' where name='X' and age='Y'

更好的方法,假设在某个地方使用某种异步搜索函数调用此函数,将用自身的扩展版本替换链中的某些函数:

echo $this->Form->hidden('exchange_type');
echo $this->Form->input('exchange_type', array(
    'disabled' => true,
    // ...
));

答案 1 :(得分:1)

您应该可以使用MutationObserver对象,例如:

// select the target node
var target = document.querySelector('#test');

// create an observer instance
var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {

        // output the new contents of the element to browser console
        if(mutation.type === 'characterData') {
             console.log(mutation.target);
        } else {
             console.log(mutation.target.innerHTML);
        }
  });    
});

// configuration of the observer:
var config = { childList: true, characterData: true };

// pass in the target node, as well as the observer options
observer.observe(target, config);

答案 2 :(得分:0)

你可以再次打电话

$("#test").html();

答案 3 :(得分:0)

您应该能够使用带有innerHTML或innerText的getElementById来获取div的内容,例如

document.getElementById('test').innerHTML;
//or
document.getElementById('test').innerText;

解释了两者之间的差异here。我建议使用innerHTML而不是innerText,但如果你无法控制用户使用的浏览器,因为innerHTML符合W3C标准。

答案 4 :(得分:0)

您可以使用

var $content = $("#text");

在$ content变量中,您可以访问div test的任何属性。

答案 5 :(得分:0)

如果你无法控制&#39; divChange&#39;功能,那么你可以做什么,但有一个解决方法。如果您确实可以控制该功能,则可以在内容发生变化时发出自定义事件并在代码中聆听它,但看到您无法做到这一点,您需要尝试这样的事情:

var text = $('#test').text(),
    intervalId = setInterval(function(){
        var newText = $('#test').text();

        if (newText !== text){
            // do something with the new value and make sure you clear the interval
            clearInterval(intervalId);
        }
    }, 500);