如何使用click(this)事件将新更改应用回html?

时间:2013-11-01 13:24:54

标签: jquery

我正试图弄清楚如何在点击它时将新的更改返回或应用回html。

看看“TODO”的评论。我可以在$(o1)上看到新的值更改,但是如何将其冒泡到具有“this”值的点击后调用方?

var fooMouseClick = function(parmThis)
{
    var $HtmlSpans = $(parmThis.parentElement.innerHtml);

    $.each($HtmlSpans, function(i1, o1) {
        if ($(o1).attr('data-column-sort-ordering') == "") {
           $(o1).attr('data-column-sort-ordering', 'ASC');

           //TODO - How to apply this new "$(o1)" changes to parmThis so the parent script caller can be updated.
        }
    });
}
var foo2 = function() 
{
    $('#Box1 li[title="Model"] span.SpanRight-SortOrdering').click(function() {
        fooMouseClick(this);
    });
}

2 个答案:

答案 0 :(得分:1)

代码$(parmThis.parentElement.innerHtml);会创建 新对象 ,因此您所做的每项更改都不会更改原始对象。

试试这个:

var fooMouseClick = function(parmThis)
{
    var $HtmlSpans = $(parmThis).parent().children();

    $.each($HtmlSpans, function(i1, o1) {
        if ($(o1).attr('data-column-sort-ordering') == "") {
           $(o1).attr('data-column-sort-ordering', 'ASC');

        }
    });
}

另请注意,如果您的选择器基于动态更改的值,则应使用委托事件处理程序。例如,如果要处理具有data-column-sort-ordering="ASC"的元素的click事件(此值已动态更改),请使用此代码:

$('#Box1').on("click",'li[title="Model"] span[data-column-sort-ordering="ASC"]',function() {
        fooMouseClick(this);
});

答案 1 :(得分:0)

试试这个:

$("#Box1").on("click","li[title='Model'] span.SpanRight-SortOrdering",function() {
    fooMouseClick(this);
});

More information here.