在jQuery元素上调用用户定义的javascript函数

时间:2014-02-22 21:23:17

标签: javascript jquery

我一直在尝试在jQuery元素上调用用户定义的JavaScript函数,虽然我已经在这里看到了几个关于它的主题,但我仍然在将逻辑应用于我的情况时遇到了一些麻烦。 这是我到目前为止所尝试的内容:

Javscript& jQuery的:

    $(document).ready(function() {

// JavaScript function     
     nl2br = function (str, is_xhtml) {
            var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>';
            return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
        }



    // jQuery Call
        if ( ! $('.mediaDesc:contains("p")').length || ! $('.mediaDesc:contains("div")').length || ! $('.mediaDesc:contains("span")').length ) {
                nl2br(this);
            }

    }); //end document ready

HTML:

<div class="mediaDesc">
Hello World!
I am text on a new line soon to have a br tag before me!    
</div>

我的目标是使用 mediaDesc 类动态查找div,以查看其内部内容是否包含html标记,例如p,span或div。如果没有,则将nl2br JavaScript函数应用于它。 任何帮助,将不胜感激。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

根据目前的可用信息,我相信你想要这样的东西:

$(".mediaDesc").each(function () {
    if ($(this).find("p").length == 0 || $(this).find("div").length == 0 || $(this).find("span").length == 0)
    {
        $(this).html(nl2br($(this).html()));
    }
});

编辑:修复了对.contains

的误用

http://jsfiddle.net/s8eNh/

答案 1 :(得分:0)

.contains用于搜索节点内的文本。你想要的是:

$('.mediaDesc').not(':has(p, div, span)').each(nl2br)

如果您需要处理节点并且仅使用texthtml调用nl2br,请执行以下操作:

$('.mediaDesc').not(':has(p, div, span)').each(function(){
    nl2br( $(this).html() )
})