在元素出现后调用Click Click事件?

时间:2014-12-02 15:28:02

标签: javascript jquery html

我使用jQuery 1.6.2。当该元素出现在页面时,我想只调用一次click事件。这是我的选择器:

span[resizer='north'][title=''] :first-child"

这可以用于触发点击事件:

$("span[resizer='north'][title=''] :first-child").click();

我怎样才能让它只在网页上出现

后才能使用一次?

3 个答案:

答案 0 :(得分:0)

根据我对你上次评论的理解回答:我的意思是我只会调用点击事件一次。我们假设有一个按钮。我将调用该按钮的click事件一次。我的意思是我将以编程方式单击该按钮。

$('button').click(function() {

    $('span[resizer='north'][title='']:first-child').click();
    $(this).unbind('click');
});

答案 1 :(得分:0)

您可以使用DOMNodeInserted事件来检测何时动态插入新元素。

var alreadyclicked = false; // variable to check that it will be clicked just once
$(document).bind('DOMNodeInserted', function(e) {
    if (!alreadyclicked){
        $("span[resizer='north'][title=''] :first-child").click();
        alreadyclicked = true;
    }
});

<强>更新

DOMNodeInserted事件与其他mutation events一起被弃用。有些浏览器支持它,但看起来不会持续很长时间。

您可以使用mutation observers来跟踪DOM中的更改

var alreadyclicked = false;
var observer = new MutationObserver(function(mutations, observer){
            //if new nodes were added
            if( mutations[0].addedNodes.length && !alreadyclicked )
                $("span[resizer='north'][title=''] :first-child").click();
                alreadyclicked = true;

        });
observer.observe( document, { childList:true, subtree:true });

答案 2 :(得分:0)

使用自定义事件,并使用.one()附加委托处理程序。

事件有2个组件,触发和处理。不要关注它被触发的次数,关注它处理的次数。

$("document").one("myclick", "span[resizer='north'][title=''] :first-child", function(e) {
  do something...;
  $(this).click(); //if you actually need the "click"
});
$("span[resizer='north'][title=''] :first-child").trigger("myclick");

这个例子意味着它被“处理”了一次。此处的其他答案可用于确保在文档准备就绪后添加元素时触发它。

您还可以使用pub / sub,这样可以更轻松。然后你只需要从ajax或任何可以添加元素的代码中触发自定义事件,而不必担心专门针对元素。订阅中的最后一行代码是取消订阅。

相关问题