即使在DOM更改后如何获得相同的ID,值或文本

时间:2019-03-30 01:45:08

标签: javascript php jquery html laravel

我想知道div的id是否为1,有人将id更改为34,当有人单击它时,即使更改后attr('id')仍等于1而不是34。对我的英语表示歉意你。

        $(document).on('click','.edit_btn:eq(0)',function(){
            var itm_id = $(this).siblings('input').attr('id');
            alert(itm_id);

        });

即使有人使用DOM更改了ID,也希望ID等于1而不是34。

1 个答案:

答案 0 :(得分:0)

您可以使用MutationObserver查看属性是否更改,然后将其更改回。确保将其更改回时,它会忽略该更改。否则您将使浏览器落后。请注意,任何使用开发工具的猴子都可以禁用此功能。

不要依赖客户。

let i = 0;
const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

let e = document.querySelector('#test');
setInterval(() => {
  i++;
  // Change
  e.setAttribute('id', i);
}, 1000); // Loop Sleep

let observer = new MutationObserver((mutations) => {
  mutations.forEach((mutation) => {
    if (mutation.type === "attributes") {
      if (e.id !== 'test') {
        let previous = e.id;
        // Revert
        e.setAttribute('id', 'test');
        console.log('Changed to test from', previous)
      }

    }
  });
});

observer.observe(e, {
  attributes: true
});
<div id="test">Test</div>