jquery将字符串引用传递给object作为函数的参数

时间:2017-12-05 06:34:11

标签: jquery

我不确定是否将$(对象)或引用对象名称的字符串传递给函数:

function makeObject(div){
    var newDiv = $(div);
    $(div).html("newDiv: " + newDiv);
    }

和来电者:

<div id="myDiv">
<a href="#" onclick="makeObject($(this).parent().attr('id'));">makeObject(this</a>
</div>

我希望这很清楚。它是一个测试功能,让我的头脑中的原则。提前谢谢。

3 个答案:

答案 0 :(得分:0)

如果id选择器在字符串中添加#前缀,则需要传递有效的选择器。

onclick="makeObject('#' + $(this).parent().attr('id'));" 

<小时/> 或者只是传递父元素jQuery对象。在这种情况下,您不需要在函数内部再次使用jQuery包装它。

onclick="makeObject($(this).parent());" 

答案 1 :(得分:0)

或者,您也可以在点击时添加事件处理程序。

// $(".myA").click(function (e) {
$("#myDiv").on("click", "a", function(e) {

// $(".myA").click(function (e) {
$("#myDiv").on("click", "a", function(e) {
  console.log(this); // `this` is anchor element

  var parentId = $(this).parent().attr("id");
  console.log(parentId);

  e.preventDefault();
});

function makeObject(div) {
  var newDiv = $(div);
  $(div).html("newDiv: " + newDiv);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="myDiv">
  <a href="#" class="myA">
makeObject(this);
  </a>
</div>

答案 2 :(得分:0)

我明白了!这样,我确信有更优雅的答案,但是:     function makeObject(div){ var newDiv = {};//$(div); newDiv = $("#"+div+""); newDiv.html("newDiv: " + newDiv); } 和函数调用:     <div id="myDiv"><a href="#" onclick="makeObject($(this).parent().attr('id'));" >makeObject(this);</a></div>