18

当 ul 内容更改时,我尝试调用 jQuery 函数。

下面是我的代码

JS

jQuery(document).ready(function($) {

        $('.ProductList').live('change', function() {
          alert('content is changed now');
        });
    });

HTML

<ul class='ProductList List Clear'>
call jquery function when content change here.
     <li></li>
     <li></li>
      <li></li>
</ul>

建议我一些想法,以便我可以解决它。

我尝试根据内容更改调用函数,因为我从事 bigcoomerce 定制和大型商务工作,因为访问权限有限,我不允许我访问 ajax 函数,所以我需要调用这样的函数。

4

7 回答 7

10

这有点晚了,但我分享给面临同样问题的新开发者;

有些人可能会建议使用MutationEvents但要小心,因为它已被弃用!

$('.ProductList').on('DOMSubtreeModified', function(event) {
    // dos tuff
});

推荐的方法是使用MutationObserver就像在这个问题中解释的那样,但要注意它在 IE8 等旧浏览器中不受支持!

于 2015-02-10T21:05:11.717 回答
7

测试:{如果特定的 ajax 请求设置为全局 false,这将不起作用}

! function () {
    var ulContent;
    $(document).ajaxStop(function () {
        var $ul = $('.ProductList');
        if(ulContent !== $ul.html()){
            ulContent = $ul.html();
            $ul.trigger('contentChanged');
        }
    });
}();

$('.ProductList').on('contentChanged',callback);

callback 是当 UL 的内容改变时要调用的函数。您应该直接从 ajaxStop 处理程序调用它,但通常我们使用自定义事件。

如果您不知道以前的语法是什么意思,或者使用它:

 $('.ProductList').on('contentChanged',function(){alert('UL content changed!!!');});
于 2013-07-24T10:36:59.293 回答
3

<Ul>没有更改事件,因为用户无法更改它,但是如果您使用 javascript 更新它的内容,您可以在更改后调用代码中的任何函数

于 2013-07-24T10:05:03.297 回答
3
$(document).on('DOMSubtreeModified', function (e) {
     if ($(e.target).hasClass("select2-choices")) {
          console.log("cambio");
          alert("cambio");
     }
});
于 2016-10-18T21:15:49.150 回答
2

ul 元素没有像表单元素那样的 onchange 事件。

我确信 li 元素的内容会被代码中的某些函数更改。所以更好的方法是在该函数中发出一个事件并监听该事件;

可能这会有所帮助:jQuery中的自定义事件

于 2013-07-24T10:28:26.990 回答
-5

setInterval(funcName, 1800)如果 ProductList 更改,您可以每 1/2 秒使用一次检查列表

示例jsfiddle

HTML

<ul class='ProductList List Clear'>
     <li></li>
     <li></li>
      <li></li>
</ul>

JS

    function handleProductList(){
        if(jQuery('ul.ProductList > *').size() !=="undefined"){
        var ProductListNum = jQuery('ul.ProductList > *').size();
            console.log(ProductListNum);
        }
    }

    /* Check List each 1/2 second */
    setInterval("handleProductList();", 1800);
于 2014-12-27T16:17:56.517 回答
-8
$('.ProductList li').live('click',function()
{
    alert('You just clicked a paragraph!');
});
于 2013-07-24T10:13:20.833 回答